嵌套类和继承C ++

时间:2013-01-07 01:33:14

标签: c++ inheritance nested-class

这是一个奇怪的问题,但我使用嵌套类在c ++中创建类似属性的功能。 我还通过使嵌套类的赋值运算符受到保护并使宿主类成为嵌套类的Friend来使这些工作成为ReadOnly。 不幸的是,似乎任何继承类(使用: public BaseClass)仍然无法访问嵌套类的赋值运算符。

我不知道这是否重要,但我确实将Friend放在了班级的公共部分。

任何人都知道如何解决这个问题? (或者黑客攻击)谢谢

编辑:已添加代码示例

#define ReadOnlyProperty(type,name,parent) \
protected: \
class name : public PropertyBase<type> \
{ \
    parent* This; \
public: \
    friend class parent; \
    name(parent* instance) { This = instance; } \
protected: \
    void operator=(type value) {Set(value);} \
    void Set(type value); \
    type Get() const; \
}; \
public: name name; \
friend class name; \
private:

基类:

class Object
{
ReadOnlyProperty(char,Type,Object);

public:

Object() : Type(this) {}
};

继承类

class A : public Object
{
public:
A() {Type = 'A';}
};

我在Type ='A'

上收到错误

2 个答案:

答案 0 :(得分:5)

友善不是继承的。

目前尚不清楚最佳解决方案是什么;或许在基类的受保护部分声明嵌套类,并使其成员公开?这样就不需要友谊了,但是来自课程层次结构之外的东西将无法摆弄它。

答案 1 :(得分:0)

并且你把朋友声明放在哪个部分并不重要。

或许,相反,将内部类放在受保护的部分中,并使其接口公开。