我正在开发一个带有预制.hpp文件的项目,其中包含所有声明和内容。
在类的私有部分中声明了一个struct,以及一些私有成员。
我需要在.cpp文件中创建一个包含struct类型的数组。
//.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,这也是私有的,但是不能从struct foo中创建一个数组?
我该如何解决这个问题? (我在一个介绍性的C ++课程......所以希望有一个简单的解决方案)
答案 0 :(得分:1)
有几个问题。
您不能使用类似于private
部分中定义的类型。
可以通过指定适当的范围来使用嵌套类型。
EnclosingClass::foo newArray[10];
但只有在foo
的{{1}}部分中定义了public
时才会有效。
答案 1 :(得分:1)
你应该在类的外部定义struct int,就像这样
struct Foo
{
std::string a;
unsigned int b;
};
class A {
private:
Foo foo;
...
}