我差不多解決了與我的代碼在stackoverflow用戶的幫助下的問題,但現在有不同的問題。我的代碼現在看起來像這樣:正向聲明'struct bb',類
#include <iostream>
#include <cmath>
#include <sstream>
using namespace std;
class root
{
public:
virtual ~root() {}
virtual root* addA(const root& a) const=0;
virtual root* addB(const root& b) const=0;
};
class bb;
class aa: public root
{
public:
aa() { }
aa(const aa& a) { }
root* addA(const root& a) const
{
return new aa();
}
root* addB(const root& b) const
{
return new bb();
}
};
class bb: public root
{
public:
bb() { }
bb(const bb& b) { }
root* addA(const root& a) const
{
return new aa();
}
root* addB(const root& b) const
{
return new bb();
}
};
int main(int argc, char **argv)
{
}
但是,當我編譯它,它給了錯誤:
/home/brain/Desktop/Temp/Untitled2.cpp||In member function ‘virtual root* aa::addB(const root&) const’:|
/home/brain/Desktop/Temp/Untitled2.cpp|30|error: invalid use of incomplete type ‘struct bb’|
/home/brain/Desktop/Temp/Untitled2.cpp|15|error: forward declaration of ‘struct bb’|
||=== Build finished: 2 errors, 0 warnings ===|
@Mat我認爲依賴問題可以通過將相關方法的定義放在實現文件中來解決。雖然設計仍然很腥。 – juanchopanza 2013-05-09 09:26:42