C ++:简洁的方法来创建对可修改对象的const引用

时间:2017-04-26 18:35:48

标签: c++ reference const

我有一个带有方法栏()的类foo。 我希望能够在对象上使用bar(),还可以使用bar()来创建对象的(修改过的)副本。 我将方法声明为:

void bar();

foo bar() const;

第二个选项适用于const foo对象,但非const foo对象上的错误: 无法将void转换为foo。

现在我可以通过以下方式解决这个问题:

foo obj2 = ((const foo&)obj1).bar();

我对一个更简洁的演员感兴趣,因为演员在(其他)案件中变得烦躁不安。解决方法是使用c附加const方法的名称,如:

foo barc() const.

我希望像(const)obj.bar()这样的东西,但很明显,这是行不通的。 有什么想法吗?

编辑:

我用一个简单的宏解决了它。

#define _const(o) ((const decltype(o))o)

将其用作

_const(obj1).bar()

下划线似乎是可选的。

通过模板的另一个好/更好的方法,请参阅 answer to this question

0 个答案:

没有答案