我有以下类(class):

class BaseStyle {
    private:
        Style *style;
    public:
        BaseStyle(Style& theStyle);
        const Style& getStyle() const;
        void setStyle(const Style& theStyle);
};

我试图将在构造函数中传递的引用存储在style中,并在调用setStyle()时更改该属性。我希望能够拥有一个属性Style& style,但是,初始化之后,我就不能更改read c++引用属性。现在,我认为最好将引用存储在指针中,但是我该怎么做呢?我不能只做style = theStyle吗?

最佳答案

您应该像这样实现您的类:

class BaseStyle
{
    private:
        Style *style;
    public:
        BaseStyle(Style &theStyle) { style = &theStyle; }
        const Style &getStyle() const { return(*style); }
        void setStyle(Style &theStyle) { style = &theStyle; }
};

说明:引用被实现为指针。文档中没有明确说明这一点,因为没有编译器在执行与此不同的操作。区别只是语法上的。这意味着,通过编写&theStyle,您将获得可以分配给指针的对象的地址。

取得对象的地址(由引用引用)并将其分配给指针没有什么不好。

关于c++ - 非常量引用类成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12029234/

10-11 00:38