【发布时间】:2013-01-07 01:33:14
【问题描述】:
这是一个相当奇怪的问题,但我正在使用嵌套类在 c++ 中创建类似属性的功能。
我还通过使嵌套类的赋值运算符受保护并将宿主类设置为嵌套类的Friend,使这些工作成为只读。
不幸的是,似乎任何继承类(带有: 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' 上遇到错误
【问题讨论】:
-
你不能自动让所有继承的类成为朋友。如果您输入一段代码,我们可以看到一个好的解决方法可能是什么样的。
标签: c++ inheritance nested-class