我试图使一个模板类作为占位符类,可以容纳诸如string和type T对象之类的东西。下面是我为此编写的代码。
#include <iostream>
#include <string>
#include <map>
using namespace std;
//A class which act as placeholder to hold
//unknown object. Something similar as Object
//in Java
template <typename T>
class Genric
{
public:
map<string, T> addP; //This will be placeholder for time
// being.
};
class A
{
public:
Genric t1; //Have object of Genric class so that we can
// access the member variable in future.
void foo()
{
cout<<"Calling foo"<<endl;
}
};
int main()
{
A a1;
a1.foo();
}
但是当我尝试编译时,我遇到了错误。
$ g++ tempClass.cxx
tempClass.cxx:21:9: error: invalid use of template-name 'Genric' without an argument list
上面的Genric类的目的只是用作将来可能填充的成员变量之一的占位符类。
因此,有没有一种方法可以编写这样的Genric类。
最佳答案
您正在将Genric
定义为模板类,但随后尝试在不给其类型的情况下初始化t1
。那就是你得到的错误。尝试例如:
Genric<int> t1;
或者,如果您正在寻找真正的运行时泛型,请查看 boost::any 。