我有以下类(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/