假設我有一個抽象基類:正向聲明嵌套stucture在基類
class Foo {
public:
struct FooStruct;
virtual FooStruct *DoFoo() = 0;
};
現在我想實現在Bar
的DoFoo
,還可以定義FooStruct
裏面:
class Bar: public Foo {
public:
struct FooStruct {
int data;
};
FooStruct *DoFoo() {
FooStruct *fs = new FooStruct;
fs->data = 42;
return fs;
}
};
然而,g++
(在我的情況下)承認Foo::FooStruct
和Bar::FooStruct
作爲兩種不同的結構,並會抱怨invalid covariant type ...
,因爲我重新定義返回類型的a 方法。
我該如何解決這個問題?
您還需要定義'Foo :: FooStruct'。您定義'Bar :: FooStruct'的事實並不重要。 –
您需要一個通用的基類來獲取返回的值。 –