是否可以在另一个类中定义一个类私有(private)并将其用于数组?例如:
class a
{
public:
private:
class b;
b myarray[10];
class b
{
public:
b(int a):a_val (a){}
private:
int a_val;
};
};
忽略公共(public),我的语法有什么问题吗?
是否也可以在A中创建一个成员函数来修改b的私有(private)值。例如,myarray[0].a_val = 5;如果是这样,这个语法是否也正确?
最佳答案
不,您定义私有(private)嵌套类的语法没问题。尽管其他一些事情是错误的:您需要在为它创建数组之前定义 b
。类型要完整。
b
不是默认可构造的,因此您还需要在 a
构造函数初始化列表中初始化数组,这在 C++03 中实际上是不可能的。 C++11 提供了初始化列表来获得该功能。
只需使用 std::vector
或 std::array
。
您的代码的固定版本:
class a
{
public:
// ATTN C++11 feature here
a() : myarray({ 1, 2}) {}
private:
class b {
public:
b(int a) : a_val (a){}
int a_val;
};
b myarray[2];
};
int main ()
{
a a;
}
关于c++ - 如何在 C++ 中定义另一个类的私有(private)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995809/