Форум программистов, компьютерный форум CyberForum.ru

Выбор шаблонного варианта для аргумента-массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поток не сигнализирует событием о своем окончании http://www.cyberforum.ru/cpp/thread1272738.html
Всем привет, нужна помощь задача такая. Есть метод у меня (mnThread) который постоянно поставляет данные, процедура (get_data) эти данные получает. Как только данные получены я устанавливаю событие и по идее должен перейти к другому методу по обработке данных.. Но что-то идёт не так.. максимум попадаю я в метод обработки (process) только один раз, почему пока не понимаю... ниже код static int...
C++ Не могу понять как исправить ошибку #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; const int n = 10; class Library http://www.cyberforum.ru/cpp/thread1272081.html
Помогите построить факториал в MFC C++
Помогите построить факториал в MFC. Целый день капаюсь в уроках, но так ничего не вышло Добавлено через 2 часа 59 минут делаю по примеру http://kvodo.ru/visual-c-mfc-osnovnyie-printsipyi-razrabotki.html и останавливась там где код функции ввести. Когда его ввожу и запускаю, кнопка все равно пишет "бла бла бла" а не результат
C++ Как "засунуть" классы в .dll ?
Добрый вечер! У меня имеется классовая иерархия, базовый класс сотрудник, наследники программист, экономист, электронщик и т.п. Сделал базу данных с помощью (vector.h) , и в main заполняю БД, и потом работаю с ней ( вывожу на экран нужные поля, сортирую так, сортирую эдак ). По заданию мне надо "Описание классов реализовать в Classes.dll, непосредственно сам список в Base.dll. Вызовы в...
C++ Информация по Button, Panel, Label, TextBox в VS2010 http://www.cyberforum.ru/cpp/thread1270298.html
Среда visual c++ 2010 для работы с графическим интерфейсом. Компоненты среды программирования(свойства,события,методы,пример использования) Button, Panel, Label, TextBox. Заранее спасибо за ответ.
C++ Уничтожение файлов и папок, без возможности восстановления Здравствуйте! Собственно это моё задание "Написать windows-приложение для гарантированного удаления файлов(каталогов) без возможности восстановления специализированным ПО". Нашла на википедии информацию по алгоритмам уничтожения: Википедия: "Уничтожение данных" 1.Вопрос собственно в реализации: с чего начать. 2.И может есть у кого какая-нибудь ещё полезная литература на эту тему? 3.Так же... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,492
Записей в блоге: 4
11.10.2014, 18:16     Выбор шаблонного варианта для аргумента-массива
Цитата Сообщение от DrOffset Посмотреть сообщение
Дело в том, что изначально массив не указатель и требует array-to-pointer conversion при передаче, так что вариант с T & может подойти
Я прошу прощения, - шаблоны и разрешения перегрузки с неявными преобразованиями, это сложно для меня, но я не понимаю Почему имя массива может подойти там где объявлена ссылка на тип и ожидается то что приводится к T?
Имя массива не приводится.
Я поэкспериментировал, кое-что подсмотрел в:
http://rsdn.ru/forum/cpp/1957817.all
хотя подозревал, что-то подобное. Тут два несовместимых фрагмента, поэтому закомментировав код с шаблоном принимающим ссылку на массив ( вот тут действительно имя проходит ) придётся раскомментировать варианты со ссылкой на тип и указатель.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;
//это разрэмить
/*
template <typename T>
void foo(T& t){
cout << "&" << sizeof(t)<<endl;
}
template <typename T>
void foo(T* t){
cout << "*" << sizeof(t)<<endl;
}*/
 
//это зарэмить
template <typename T, size_t N>
void foo(T (&t)[N]) {
cout << "T (&t)[N]" << sizeof(t)<<endl;
}
 
int main()
{
    int a[] = {1,2,3};
    int (&c)[3] = a;//ссылка на массив
    int d = a[0]; //тип
//это разремить
/*
foo(a);//неявно a to &a[0] то есть к T*
foo(*a);//a to a[0] то есть к T и можно передать в T&
foo(c);//int (&c)[3] to &a[0] ! то есть снова к T*, ссылка на массив и ссылка на тип разные звери и преобразование к ссылке int& не будeт и тут
*/
//это зарэмить
foo(a);//массив по ссылке
cout <<  endl;
    system("pause");
    return 0;
}
Возможно я и близко не понял о чём речь.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru