如何使用声明私有的结构?

时间:2014-11-30 07:50:12

标签: c++ private

我正在开发一个带有预制.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 ++课程......所以希望有一个简单的解决方案)

2 个答案:

答案 0 :(得分:1)

有几个问题。

  1. 您不能使用类似于private部分中定义的类型。

  2. 可以通过指定适当的范围来使用嵌套类型。

    EnclosingClass::foo newArray[10];
    

    但只有在foo的{​​{1}}部分中定义了public时才会有效。

答案 1 :(得分:1)

你应该在类的外部定义struct int,就像这样

struct Foo
     {
          std::string a;
          unsigned int b;
     };

class A {
private:
Foo foo;
...
}