Сообщение об ошибке C ++ - PullRequest
       0

Сообщение об ошибке C ++

1 голос
/ 17 октября 2011

Я получил это сообщение об ошибке при попытке скомпилировать мой код:

btree.h:23: error: expected unqualified-id before 'template'

это происходит из этой строки:

template <typename T> std::ostream& operator<<(std::ostream& os, const btree<T>& tree);

над этой строкой нет абсолютно ничего, кроме связки комментариев и пары #include библиотечных файлов, а именно:

#include <iostream>
#include <cstddef>
#include <utility>

#include "btree_iterator.h"

мой btree_iterator.h содержит:

template <typename T>
class btree_iterator  {


}

если бы кто-то мог сказать мне, что случилось, это было бы очень признательно!

Ответы [ 3 ]

4 голосов
/ 17 октября 2011

Вы забыли точку с запятой:

template <typename T>
class btree_iterator  {


};
 ^
0 голосов
/ 17 октября 2011

Если вы объявляете его в классе, вы должны шаблонизировать сам класс и непосредственно определить его в нем.

template<typename T>
class btree {

   //your overloaded function here without the beginning template declaration
};

Также с шаблонными классами вы не можете разделить класс на строго заголовок (.h) и файл реализации (.cpp), потому что тогда компилятор не сможет создавать правильные объекты во время выполнения, как если бы он мог видеть только заголовок.Поэтому в одном и том же файле .h напишите объявление и определение.

0 голосов
/ 17 октября 2011

Прокомментируйте эту строку и поместите очень простую строку, возможно, typedef char mychar; Если вы получите ошибку в этой строке, то вы можете выяснить, что фактическая ошибка находится в конце btree_iterator.h.

Потому что в C и C ++ включаемые файлы просто вставьте содержимое включаемого файла.Если в файле включения есть опечатка, возможно, отсутствует точка с запятой, которая переносится в исходный файл.

...