miluit01 发表于 2008-12-11 01:11

请教c++ boost mpl问题。

近日写程序遇到了一个很有意思的问题,不知道有人可以帮我么?

我做了一个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 编辑 ]
页: [1]
查看完整版本: 请教c++ boost mpl问题。