C++ 将私有内部类引入主类

C++ 将私有内部类引入主类,c++,nested-class,C++,Nested Class,代码如下: 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 =

代码如下:

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;
}
class-Vec
{
公众:
Vec(){len=0;};
Vec(int-n);
~Vec();
无效设置值(整数idx,整数v);
void printVec()常量;
私人:
类别项目
{
朋友类向量机;
Items(){value=0;};
项目(intv){value=v;};
int值;
};
内伦;
项目*vec;
};
/*声明成员函数&构造函数和析构函数*/
int main()
{
Vec载体(5);
printVec();
对于(int i=0;i
我想让它可以申报

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