gpt4 book ai didi

C++ 嵌套类相互引用

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:12 30 4
gpt4 key购买 nike

在 C# 中,我可以让两个嵌套类毫无问题地相互引用:

public class CFGFile
{
class Setting
{
public Entry Ent;
}

class Entry
{
public Setting Setg;
}
}

但是,在 C++ 中尝试同样的事情会导致问题:

class CFGFile
{
class Setting;

class Entry
{
Setting Setg;
};

class Setting
{
Entry Ent;
]
};

我明白了

"incomplete type not allowed"

在Setg变量定义处,报错

"C2079: 'CFGFile::Entry::Setg' uses undefined class 'CFGFile::Setting'"

编译时。

我使用的是 Visual Studio 2017。

在 C++ 的嵌套类中不能进行交叉引用吗?

最佳答案

这与是否嵌套无关。在 C++ 中,您不能像那样为两个类/结构相互引用。解决方法是您使用不需要完整类型定义的指针或引用。对于您的情况,请尝试以下操作,

class CFGFile
{
class Setting;

class Entry
{
Setting* Setg; // or std::unique_ptr<Setting> Setg;
};

class Setting
{
Entry Ent;
};
};

正如@Ted Lyngmo 所建议的,std::unique_ptr 是现代 C++ 应用程序的首选方式。

关于C++ 嵌套类相互引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53414238/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com