<分区>
假设我有一个基本抽象类:
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
识别为两个不同的结构,并且会提示无效的协变类型...
因为我重新定义了方法的返回类型。
我该如何解决这个问题?