在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中解决这个问题?
答案 0 :(得分:3)
你可以使用const-cast:
const IFoo & f0 = Foo();
IFoo & f = const_cast<IFoo &>(f0);
f.bar();
答案 1 :(得分:1)
Foo f_;
IFoo& f=f_;
这解决了您的示例问题。它可能无法解决您的实际问题。