template <class Data> class gosha_list {
class Node {
...
};
Node *pbeg, *pend;
public:
Node* find(Data dt);
};
template<class Data> Node * gosha_list<Data>::find(Data dt) {
...
return pv;
}
Компилятор выдает ошибку
error C2143: syntax error : missing ';' before '*'
на строчку
template<class Data> Node * gosha_list<Data>::find(Data dt) {
Складывается впечатление, что он не видит Node как тип. Я прав?
Компилятор MS Visual C++.
Здравствуйте, Zh0rzh, Вы писали:
.....
Z>Складывается впечатление, что он не видит Node как тип. Я прав?
.....
Конечно не видит — он же внутри gosha_list. Надо делать так:
template<class Data> gosha_list<Data>::Node * gosha_list<Data>::find(Data dt) {
Прошу прощения за второе сообщение — забыл вначале, а редактировать нельзя. В зависимости от компилятора (MS Visual C++ бывает разный) может быть прийдется еще добавить typename:
template<class Data> typename gosha_list<Data>::Node * gosha_list<Data>::find(Data dt) {
Здравствуйте, Peregrin, Вы писали:
P>Прошу прощения за второе сообщение — забыл вначале, а редактировать нельзя. В зависимости от компилятора (MS Visual C++ бывает разный) может быть прийдется еще добавить typename:
P>P>template<class Data> typename gosha_list<Data>::Node * gosha_list<Data>::find(Data dt) {
P>
именно typename gosha_list<Data>:: и не хватало
Спасибо.