2

这是代码:

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;还是报“invalid use of class Vec::Items

如何让编译器识别声明?

4

1 回答 1

2

我想让它可以被宣布。

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

于 2012-07-28T04:35:15.233 回答