【发布时间】:2018-11-21 14:26:16
【问题描述】:
在 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;
]
};
我明白了
“不允许不完整的类型”
在setg变量定义处,报错
"C2079: 'CFGFile::Entry::Setg' 使用未定义的类 'CFGFile::Setting'"
编译时。
我正在使用 Visual Studio 2017。
在 C++ 的嵌套类中不能交叉引用吗?
【问题讨论】:
-
在 C# 中尝试使用 struct 而不是 class,这应该是一个公平的比较。也不应该工作。
-
@tkausl 因为在上面的 C# 示例中,定义了对对象的引用,而不是类类型的对象。我得到它。谢谢!
-
值不能是
NULL,所以你写的是一个Entry,其中包含一个Setting,而Entry又包含一个Setting,而Setting又包含一个@ 987654328@.... 无限
标签: c++ class nested visual-studio-2017