这是代码:
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;
时,出现错误:“未声明的项目”。
但在使用vector.Items n;
时,错误仍然是“class Vec::Items
无效使用”
如何让编译器识别声明?
答案 0 :(得分:2)
我想让它可以宣布。
您需要使Items
成为Vec
类的公共嵌套或内部类,然后在创建实例时使用范围解析运算符(即Vec::Items
)那个对象类型。否则,您只能在Vec::Items
的方法中创建Vec
对象的实例,因为它将是Vec
的私有内部类,而不是可公开访问的类类型