これはかなり奇妙な質問ですが、ネストされたクラスを使用して、C++ でプロパティのような機能を作成しています。また、ネストされたクラスの代入演算子を保護し、ホスト クラスをネストされたクラスの a にすることで、これらを ReadOnly として機能させましたFriend
。残念ながら、継承クラス ( with : 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' でエラーが発生する