【发布时间】:2023-03-12 16:45:01
【问题描述】:
我有类似的东西:
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 转换为另一个结构。我这样做是因为 Foo 是一个抽象类,而使用该库的派生类只是其中之一。)
目前,仅将其粘贴到类中并将 Data 替换为 Foo::Data 无处不在。
class Foo {
typedef struct Data_s {
int field1;
int field2;
} Data;
...
}
我在Bar data_; 收到'Data' in class 'Foo' does not name a type
【问题讨论】:
-
那么你想创建一个类似于Data_s的类吗?或者您想在运行时将其成员的值复制到一个类中?
-
结构和类之间只有一些区别,你想通过'将结构移动到类'来实现什么?可能澄清一下你到底想做什么会有所帮助。
-
添加/澄清。这样更好吗?