gpt4 book ai didi

c++ - 将私有(private)内部类纳入主要

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:41 26 4
gpt4 key购买 nike

代码如下:

class Vec
{
public:
Vec() {len=0;};
Vec(int n);
~Vec();
void setValue(int idx,int v);
void printVec() const;
private:
class Items
{
friend class Vec;
Items(){value = 0;};
Items(int v){value = v;};
int value;
};
int len;
Items *vec;
};

/*Declare the member functions & constructor & destructor*/

int main()
{
Vec vector(5);
vector.printVec();
for(int i=0;i<5;i++){
vector.setValue(i,i);
vector.printVec();
}
Items n;
return 0;
}

当我尝试使用 Items n; 时,出现错误:“Items undeclared”。

但是当使用 vector.Items n; 时,仍然报错“invalid use of class Vec::Items

如何让编译器识别声明?

最佳答案

I wanna make it can be declared.

您需要使 Items 成为 Vec 类的公共(public)嵌套类或内部类,然后使用作用域解析运算符(即 Vec: :Items) 创建该对象类型的实例时。否则,您只能在 Vec 的方法内创建 Vec::Items 对象的实例,因为它将是 Vec 的私有(private)内部类>,而不是可公开访问的类类型。

关于c++ - 将私有(private)内部类纳入主要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698296/

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