Проблема с шаблонами
Вроде бы шаблоны - вещь простая, но разобраться, в чем тут дело, не могу.
Вопрос: В чем проблема? Либо нужны какие-то дополнительные ключевые слова (типа export. Кстати, в хэлпе говорится следующее "The export keyword is reserved for future implementation, but has no effect in this release"), либо так и должно быть.
P.S. Прошу прощения за ламерский вопрос.
При вызове функции-шаблона, определенной в другом модуле, во время линкования вылетает ошибка "Unresolved external MY_FUNCTION referenced from MY_MODULE". Если функцию определить в заголовочном файле - все нормально.
Ты по всей видимости не подключил файл реализации (*.cpp) к своему проекту. Project -> Add file - так если не ошибаюсь
Вроде бы шаблоны - вещь простая, но разобраться, в чем тут дело, не могу.
шаблоны тут абсолютно не причем... попробуй любую другую функцию реализовать в том сpp-файле...получишь тот же резалт
Вопрос: В чем проблема? Либо нужны какие-то дополнительные ключевые слова (типа export. Кстати, в хэлпе говорится следующее "The export keyword is reserved for future implementation, but has no effect in this release"), либо так и должно быть.
ничего не нужно... export вааще тут не причем =))
Кстати проблемы сборки проектов с множеством цпп-файлов, то бишь проблемы раздельной линковки, обсуждаются в любом учебнике по цпп... читай внимательнее ;)
Извинений не нужно :) ...собственно форумы и предназначены ...для того чтобы на них задавали
вопросы... все мы ламеры, только в разной степени ;)
Ты по всей видимости не подключил файл реализации (*.cpp) к своему проекту. Project -> Add file - так если не ошибаюсь
шаблоны тут абсолютно не причем... попробуй любую другую функцию реализовать в том сpp-файле...получишь тот же резалт
;)
На сколько помню, шаблоны вообще должны быть полностью в заголовочных файлах.
Извинений не нужно :) ...собственно форумы и предназначены ...для того чтобы на них задавали
вопросы... все мы ламеры, только в разной степени ;)
Может быть я и ламер, но не втакой же степени ;-). Само собой, модуль к проекту был подключен. Скорее всего, прав Biomen.
Может быть я и ламер, но не втакой же степени ;-). Само собой, модуль к проекту был подключен. Скорее всего, прав Biomen.
Шаблонные методы или методы шаблонного класса будут скомпилированы только тогда, когда этот шаблон будет инстанирован конкретными аргументами. Поэтому нет смысла выносить их в отдельный cpp, т.к. они все равно не будут скомпилированы (есть конечно export, но он не поддерживается большинством компиляторов). Шаблонные методы должны быть определены в том же cpp, либо подключены к cpp, где они будут инстанированы.
мы не можем разделить объявление и реализацию шаблона функции, как в случае с обычными функциями
Да ну?! :}
// Объявление
template<class T> T func(T arg);
int main(int argc, char* argv[])
{
int i = func(5); // инстанирование + вызов
}
// реализация (определение)
template<class T>
T func(T arg)
{
return arg;
}
Повторюсь: шаблонный метод должен быть определен в том же cpp (непосредственно, либо по средством #include), где и инстанирован.