我在转换参数时遇到了一些问题:
我有这个结构:
class XMLCO
{...};
class CO: public XMLCO
{...};
而我的问题在于构造函数中的这个类:
class ProcessUnit
{
public:
ProcessUnit( const CO& co );
private:
NetComm _ipComm;
};
对象 _ipComm(NetComm 类型)需要使用 XMLCO 进行初始化,但在这个构造函数中,我只获得了一个继承 XMLCO 的 CO,所以我虽然可以在构造函数中进行某种向下转换:
ProcessUnit::ProcessUnit( const CO& co )
{
CO temp = const_cast<CO>( co ); // to remove the const -- THIS LINE CAUSE THE PROBLEM (it gives me this error: the type in a const_cast must be a pointer or reference to an object type
CO* ptrTemp = &temp; // to make it a pointer
XMLCO* xmlcc = dynamic_cast<IOXMLDescCreationContext*>( ptrTemp );
_ipComm = new IONetworkComm( *xmlcc );
}
我想知道的是,是否有更简单的方法(不改变任何通用结构)或者我做错了什么。
谢谢