首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关模板的一个有关问题

2012-02-28 
有关模板的一个问题有一个类templateclass Tclass Cn{string name}如果希望别人用CnT x时, x.name就

有关模板的一个问题
有一个类
template<class T>
class Cn{
  string name;
};

如果希望别人用Cn<T> x时, x.name就自动等于T的名字,如:Cn<int> x的时候, x.name就自动等于"int"
这种功能可以实现吗?

[解决办法]
T i();
typeid(i).name?
需要做成template class么?

好像你的template类写错了
[解决办法]
写一个构造函数

然后通过#include <typeinfo>里面的东西来确定类型
没研究过,是个思路,不知可行否
[解决办法]
比较土。。

C/C++ code
#include <typeinfo>template <class T> class Cn{ public:    Cn ()    {        if (typeid(T) == typeid(int))        {            name = "int";        }        else if (typeid(T) == typeid(double))        {            name = "double";        }        else if (typeid(T) == typeid(char))        {            name = "char";        }        else if (typeid(T) == typeid(float))        {            name = "float";        }                    //.....                }    string name; }
[解决办法]
typeid(T).name() 似乎这样可以吧
[解决办法]
没问题,看下面这个例子
C/C++ code
#include   "windows.h" #include   <iostream > #include   <vector > template <class T > class Cn{public:    Cn() : name( typeid(T).name() )    {    }    const std::string & GetName()    {        return name;    }private:    std::string name; }; int main() {    using namespace std;    Cn< int > test1;    cout << test1.GetName().c_str() << endl;    Cn< float > test2;    cout << test2.GetName().c_str() << endl;    system( "pause" );} 

热点排行