私は、相互接続の理由から、相互にポインタを含む一連のクラスを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