萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2161|回复: 0

请教c++ boost mpl问题。

[复制链接]
发表于 2008-12-11 02:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

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 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-4-28 10:10 , Processed in 0.058687 second(s), 20 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表