读书人

有关模板的一个有关问题

发布时间: 2012-02-28 13:06:34 作者: rapoo

有关模板的一个问题
有一个类
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" );} 

读书人网 >C++

热点推荐