2012-04-23 7 views
1

У меня есть класс ниже, который наследуется от класса Collection, где у меня есть определенные виртуальные функции, которые мне нужно позже реализовать в моем производном классе ниже. Я еще не включил определения для своих функций-членов, кроме конструктора моего производного класса, в .cpp-файл. Однако, когда я создаю свой проект, я получаю следующее сообщение об ошибкеC++ Build Error - ожидаемое имя класса перед '{' токеном |

ожидаемое имя класса перед '{' токеном |

Я пробовал все, что я знаю, чтобы попробовать, и мне нужна помощь в понимании того, что у меня не так в коде и как я могу это исправить.

#ifndef VARIABLEARRAY_H 
#define VARIABLEARRAY_H 

#include "Collection.h" 

using namespace std; 

class VariableArray: public Collection{ 

     int* list[];// dynamic array that is resized on demand 

    public: 
     VariableArray(); 

}; 
#endif 

всяческая помощь будет принята с благодарностью.

+0

Вы уверены, что 'Collection' является классом, а не шаблоном? – Cosyn

ответ

1

Вы уверены, что символ Collection уже замечен вашей единицы переводов?

Вы можете добавить:

#include "Collection.h" 

(или что-то правильное название) перед определением класса.

+0

Это кажется более вероятным, чем мой ответ. Мои знания о C++ не помогли мне: p – chris

+0

Видно. , , Я только недавно удалил оператор #include «Collection.h», поскольку сначала я думал, что это была некоторая проблема с круговым включением. – Kobojunkie

0

Я думаю, вы могли бы также объявить вперед Коллекция:

class Collection; 

class VariableArray : public Collection { 
.... 
}; 
+3

Не в наследство. – Puppy

0

Как вы определить, если Collection доступен для компилятора? Представлена ​​ли декларация class для Collection в preprocessed файл вашего VariableArray.cpp или что-то еще, что соответствует исходному файлу?

Глядя на препроцессором выходе может помочь вам определить:

  • если загрязнение пространства имен является проблемой (например, #define сталкивается с Collection)
  • если Collection декларация действительно доступна до вашего VariableArray декларации.

Если это не проблема загрязнения пространства имен, я бы проверял, используете ли вы одни и те же охранники #include в более чем одном файле заголовка.

Смежные вопросы