注册 登录
编程论坛 C++教室

嵌套结构中的友元

cosdos 发布于 2008-03-27 20:11, 1093 次点击
// 最近学C++
// Thinking in C++ 中的一段代码

struct holder {
    private:
        int a[SZ];
    public:
        void initialize();
        
        struct pointer {
            private:
                holder * h;
                int * p;
            public:
                void initialize(holder * H);

                void next();
                void previous();
                void top();
                void end();

                int read();
                void set(int i);
        };
        
        friend class pointer;  // 书中是 friend holder::pointer;
};

按书中的无法通过编译:  a class-key must be used when declaring a friend

为什么是 friend class ?  (类?)
3 回复
#2
sunkaidong2008-03-27 20:28
我用c++6.0按书中编译可以通过....
嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员。
嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见。嵌套类的名字将不会与另一作用域中声明的名字冲突。
嵌套类定义了其外围类中的一个类型成员。像任何其他成员一样,外围类决定对这个类型的访问。在外围类的 public 部分定义的嵌套类定义了可在任何地方使用的类型,在外围类的 protected 部分定义的嵌套类定义了只能由外围类、友元或派生类访问的类型,在外围类的 private 部分定义的嵌套类定义了只能被外围类或其友元访问的类型
#3
aipb20072008-03-27 23:39
哦,没接触过
#4
cosdos2008-03-28 00:31
我用的是DEV-C++
1