Внутри объявления класса Density
, я построил эти функции члена:Шаблон для СТЛ контейнера
class Density {
public:
template <typename Container>
void printStream (Container<Point>::iterator lo, Container<Point>::iterator hi);
......
};
В файле CPP:
template <typename Container>
void Density::printStream (Container<Point>::iterator lo, Container<Point>::iterator hi)
{
...
}
Но получить эти ошибки при попытке компиляции:
src/../include/density.hpp:166:23: error: 'Container' is not a template
src/../include/density.hpp:166:50: error: expected unqualified-id before 'lo'
src/../include/density.hpp:166:50: error: expected ')' before 'lo'
src/../include/density.hpp:166:50: error: expected initializer before 'lo'
src/density.cpp: In member function 'void Density::startAlgorithm()':
src/density.cpp:291:43: error: 'printStream' was not declared in this scope
src/density.cpp: At global scope:
src/density.cpp:327:28: error: 'Container' is not a template
src/density.cpp:327:55: error: expected unqualified-id before 'lo'
src/density.cpp:327:55: error: expected ')' before 'lo'
src/density.cpp:327:55: error: expected initializer before 'lo'
Что следует изменить? А также, почему, поскольку я хотел бы понять этот вопрос.
+1 , но также есть проблема с файлом '.cpp'. – juanchopanza
Действительно ли стандарт соответствует использованию '...' и предоставляет только один аргумент (т. Е. Опустить аргумент распределителя)? – celtschk
@juanchopanza О, хорошая точка. Я собираюсь «исправить», ссылаясь на faq: ** [A: Почему шаблоны могут быть реализованы только в файле заголовка?] (Http://stackoverflow.com/questions/495021/why-can-templates- только-быть-реализован-in-the-header-file/495056 # 495056) ** – sehe