gpt4 book ai didi

c++ - 如何在 C++ 中定义另一个类的私有(private)类

转载 作者:可可西里 更新时间:2023-11-01 17:52:21 25 4
gpt4 key购买 nike

是否可以在另一个类中定义一个类私有(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::vectorstd::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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com