假设我有一个抽象基类:正向声明嵌套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'的事实并不重要。 –
您需要一个通用的基类来获取返回的值。 –