小编las*_*bra的帖子

c ++派生纯抽象w /嵌套结构

我正在尝试建立一个类似于c#属性概念的语法糖.

我读过这篇文章:原生c ++中的C#属性?.这很有帮助,但缺乏我想要的设计.我还恭敬地不同意那里的几个断言,即属性概念是不好的形式,因为我没有看到一组标题为get_id()和set_id()的方法与暴露相同概念的运算符重载之间的区别,允许代码在使用类时更干净,并且通常不鼓励公共访问私有字段,也将公共实现与私有设计分离.

但是,我提出的代码(受该链接的启发)真的很糟糕,并且很难维护.我想知道是否有人有任何建议来清理它,或者更重要的是,知道更好的方法来做到这一点.

class someClass
{
public:
    struct someProperty_struct{
        virtual someProperty_struct& operator=(const int&){return *this;}
        virtual operator int(){return 0;}
    }someProperty;
};

class derivedClass : someClass
{
    int i;
public:
    struct intProperty: someClass::someProperty_struct
    {
    protected:
        friend class derivedClass;
        derivedClass *outer;
    public:
        virtual someProperty_struct& operator=(const int& value){
            outer->i = value;
            return *this;}
        virtual operator int(){return outer->i;}
    };
    derivedClass()
    {
        intProperty p = intProperty();
        p.outer = this;
        someProperty = p;
    }
};

class consumerClass
{
public:
    someClass* data;
    consumerClass() …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance properties nested-class pure-virtual

5
推荐指数
1
解决办法
733
查看次数