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

How to use structs declared private?

本文关键字:结构 何使用 声明      更新时间:2023-10-16

我正在做一个带有预制.hpp文件的项目,其中包含所有声明和内容。

在类的私有部分声明一个结构,以及一些私有成员。

我需要在.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,这也是私有的,但不能从结构 foo 中创建一个数组?

我该如何解决这个问题?(我正在上入门C++课......所以希望有一个简单的解决方案)

有几个问题。

  1. 不能像尝试的那样使用在类的private部分中定义的类型。

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

    EnclosingClass::foo newArray[10];
    

    但这只有在 EnclosingClasspublic 部分中定义了foo时才有效。

你应该像这样定义类外部的结构 int

struct Foo
     {
          std::string a;
          unsigned int b;
     };
class A {
private:
Foo foo;
...
}