c++ - 如何使用声明为私有(private)的结构?

标签 c++ private

我正在开发一个包含所有声明和内容的预制 .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)...所以希望有一个简单的解决方案)

最佳答案

有几个问题。

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

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

    EnclosingClass::foo newArray[10];
    

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

关于c++ - 如何使用声明为私有(private)的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27211198/

相关文章:

c++ - 关于C++中类的私有(private)成员

JavaDoc:私有(private)字段和方法

c++ - 我需要在共享内存对象上使用 shm_unlink 吗?

c++ - 获取不带 -g 标志的 gdb 可读符号?

python - 我可以在 C++ 中使用用 cython 编译的动态库吗?

module - Google Guice、拦截器和 PrivateModules

c++ - 如何将一半传递给顶点着色器?

c++ - 通过 g++ 编译将 .so 文件链接到 .cpp 文件

Ruby 私有(private)实例变量,有异常(exception)

java - 关于字段的私有(private)静态最终关键字的快速 Java 问题