我正在开发一个包含所有声明和内容的预制 .hpp 文件的项目。
在类的私有(private)部分声明了一个结构,以及一些私有(private)成员。
我需要在我的 .cpp 文件中创建一个结构类型的数组。
//.hpp
private:
struct foo
{
std::string a;
unsigned int b;
};
std::string* x;
unsigned int y;
//.cpp
unsigned int returny()
{
return y; // No errors
}
foo newArray[10]; // Compile time error; unknown type name
为什么我可以返回 y,它也是私有(private)的,但不能从 struct foo 中创建一个数组?
我该如何解决这个问题? (我正在学习 C++ 入门类(class)...所以希望有一个简单的解决方案)
最佳答案
有几个问题。
您不能像您尝试的那样使用类的
private
部分中定义的类型。可以通过指定适当的范围来使用嵌套类型。
EnclosingClass::foo newArray[10];
但这只有在
EnclosingClass
的public
部分定义了foo
时才有效。
关于c++ - 如何使用声明为私有(private)的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27211198/