在C ++ 03中是否可以使用非常量右值引用?

时间:2015-02-13 18:45:12

标签: c++ c++11 rvalue-reference

在C ++ 11之前,是否可以将从函数返回的对象绑定到该类型的纯虚超类型的非const引用?

例如,假设我有这段代码:

class IFoo
{
public:

    virtual void bar() =0;

};

class Foo : public IFoo
{
public:

    virtual void bar()
    { cout << "Hello, World!" << endl; };

};

在C ++ 11中,我可以这样做:

IFoo && f = Foo();
f.bar();

我知道,我可以在C ++ 11之前使用以下内容:

const IFoo & f = Foo();

但是我不允许在f上调用任何非const方法。有没有办法在C ++ 03中解决这个问题?

2 个答案:

答案 0 :(得分:3)

你可以使用const-cast:

const IFoo & f0 = Foo();
IFoo & f = const_cast<IFoo &>(f0);
f.bar();

答案 1 :(得分:1)

Foo f_;
IFoo& f=f_;

这解决了您的示例问题。它可能无法解决您的实际问题。