|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
近日写程序遇到了一个很有意思的问题,不知道有人可以帮我么?
我做了一个template的类:
template<
typename T, // Eingabeparameter
typename MessageContent = boost::mpl::if_c<
boost::is_pointer<T>::value, // Wenn Eingabeparameter ein Zeiger ist:
T, // TRUE->nicht aendern
T* // FALSE->wandeln den Eingabeparameter in Zeiger format.
>
>
class CPointMessage
{
MessageContent m_messageContent;
public:
CPointMessage( std::string strMessageName )
{
m_strMessageName = strMessageName;
// m_messageContent muss jetzt instantiziert wird....:( aber wie???
}
...
};
上面大概是这个类的代码,这个类不管用CPointMessage<Widget>或者
CPointMessage< Widget*>去实例化,内部成员函数m_messageContent都是一个
Widget指针类型, 但是有一个小的问题:我现在需要给这个m_messageContent通过
new进行实例化,但是通过一系列的转换后我已近失去Widget这个类的typename了,
所以不能实例化了,只能通过外部赋值,才可以使用这个成员变量。不知道是否
有其他的方法,比如通过函数(或者其他方法),对一个类型进行判断,不论他是否是
Object或者Zeiger都可以给出这个类型的Object的typename。。。比如Widget*的
typename是Widget.
[ 本帖最后由 miluit01 于 2008-12-11 01:14 编辑 ] |
|