У меня есть серия классов на C++, которые содержат указатели друг на друга по причинам подключения. Код выглядит следующим образом:Определение классов, содержащих указатели друг на друга
class Cell;
//classes
class Connection {
public:
Cell * source;
virtual bool trigger() {
return source->trigger(); //line 16, source of the error
}
//constructors
//default
Connection() {
source = NULL;
}
//call
Connection(Cell * in) {
source = in;
}
//copy
Connection(const Connection & in) {
source = in.source;
}
};
class NotConnection : Connection {
public:
virtual bool trigger() override {
return !source->trigger();
}
//constructors
//default
NotConnection() {
source = NULL;
}
//call
NotConnection(Cell * in) {
source = in;
}
//copy
NotConnection(const NotConnection & in) {
source = in.source;
}
};
class Cell {
public:
vector<Connection *> parents;
virtual bool trigger() = 0;
~Cell() {
for (int i = 0; i < parents.size(); i++) {
delete parents[i];
}
}
};
Я думал, что я мог бы использовать вперед декларацию, чтобы прояснить любые вопросы компиляции, но когда я пытаюсь построить проект, я получаю ошибку:
source.cpp(16): error C2027: use of undefined type 'Cell'
Я пытался ПЕРЕУСТАНОВКИ упорядочив классы и переадресовывая объявление Connection
, и это тоже не сработало, поэтому мой вопрос заключается в том, почему компилятор выбрасывает эту ошибку и что я могу сделать для ее устранения?
Um ... какая линия линии 16? – Brian
Я добавил комментарий, чтобы показать, какая строка 16 – Stephen