【发布时间】:2012-08-08 12:09:14
【问题描述】:
CallingClass::CallingFunc()
{
SomeClass obj;
obj.Construct(*Singleton::GetInstance()); // passing the listener
// Singleton::GetInstance() returns a static pointer.
//Singleton is derived from IListener
}
SomeClass::Construct(const IListener &listener)
{
IListener* pListener = const_cast<IListener*>(&listener);
}
在const_cast pListener 之后为空。
是否可以执行这种类型转换?
谢谢
【问题讨论】:
-
究竟是什么失败了?你在编译时有问题吗?运行?我看不出
SomeClass::Construct成员函数有什么问题。 -
你是认真的吗,一个
GetInstance(),它返回一个指向singleton的指针????哎呀,这就是丑陋代码的缩影! -
const_cast pListener 为空后。
-
我认为
const_cast可能必须在&运算符之后移动,但现在无法测试。在您尝试抛弃const之前,您已经在询问const引用的地址,这很奇怪。 -
@TonyTheLion:很抱歉,单例不是这样写的。我不明白你的担忧。你能详细说明一下吗?
标签: c++ const-cast