我正在尝试创建一个模板类作为占位符类,它可以包含类似字符串和类型 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。
关于C++使模板类作为另一个类中的占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288827/