在同一头文件的结构中使用类
Using a class inside a structure in the same header file
我想在这样的结构中使用一个类:
struct A {
int a;
string b;
SomeClass some_class;
};
class SomeClass {
private:
A a;
// some code
};
我试图转发声明结构,但它不起作用,我经常收到不完整的类型错误。
当您将struct或class类型的成员定义为组件(而不是作为引用或指向它的指针)时,必须在此时定义该组件的内存布局。因此,当在struct A
中声明SomeClass some_class
时,则SomeClass
必须是完全定义的,包括成员等等;如果将A a
声明为SomeClass
的组件,则需要完全定义A
的结构。因此,没有办法将两者定义为彼此的组成部分。
但这不仅仅是一个鸡和蛋的问题,因为即使你可以以某种方式声明它,实例化SomeClass的实例意味着什么?它将具有分量a
,然后分量some_class
将具有(不同的)分量a
,依此类推。
如果我理解得对的话,你想建立一对some_class
和a
。为此,请使用一个使用class
-关键字的前向声明和一个指针(而不是嵌套对象)。在代码的某个地方,例如在SomeClass
的构造函数中,指定一个值:
struct A {
int a;
string b;
class SomeClass *some_class;
};
class SomeClass {
public:
SomeClass() { a.some_class = this; };
private:
A a;
// some code
};
相关文章:
- C++将文本文件中的数据读取到结构数组中
- 调用 C 文件中的"C++"结构
- 结构包含在两个头文件中,这两个文件我都不拥有
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 介子复制/安装头文件到输出目录并保持文件夹结构
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 将内部带有矢量的结构保存/读取到二进制文件中
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 将文本文件解析为树状数据结构
- 如何使用位字段将数据从二进制文件复制到结构中?
- 在树结构.txt文件中搜索节点
- 当结构位于单独的头文件中时'unregistered datatype'在 QML 中出现Q_GADGET错误
- 将文件读入数据结构
- 如何读取没有数组或结构的 3 列文件
- (ODR 使用问题)在不同文件中priority_queue名称相同的结构
- 在.cpp文件之间传递结构声明,而不使用全局头文件
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 如何在结构/文件中搜索名称