我有一个类似这样的东西:
typedef struct Data_s {
int field1;
int field2;
} Data;
class Foo {
void getData(Data& data);
void useData(Data& data);
}
在另一个类的函数中,我可能会这样做:
class Bar {
Data data_;
void Bar::taskA() {
Foo.getData(data_);
Foo.useData(data_);
}
}
有没有一种方法可以将 Data 从全局作用域移动到 Foo 中,而不创建一个新的类?Data 是一个库中已存在的结构体的镜像。(即相同的字段,只是名称不同。稍后我会将 Data 强制转换为另一个结构体。我这样做是因为 Foo 是一个抽象类,使用库的派生类只是其中之一。)
当前,在类中粘贴它并在所有地方用 Foo::Data 替换 Data 并不能起作用。
class Foo {
typedef struct Data_s {
int field1;
int field2;
} Data;
...
}
我在 Bar data_;
处收到了 'Foo' 类中的 'Data' 不是一种类型
的错误提示。