【发布时间】:2013-08-24 02:45:06
【问题描述】:
我定义了一个模板类:
template <class T>
class TempClass
{
...
};
如果我想在一些 MyClass.h 中创建这个类的对象来访问模板类的函数,我应该如何传递模板的参数? 我尝试执行以下操作:
class MyClass{
public:
TempClass<T> temp;
}
当然,假设它不起作用,因为 MyClass 中没有定义 T,所以我有点迷失如何正确地做到这一点。
谢谢。
【问题讨论】:
-
我没听懂。你想达到什么目的?以通用方式创建一个类 (
MyClass) 还是仅实例化一种特定类型的模板对象?对于第二种情况,要将其实例化为 int,只需将 object 定义为TempClass<int> temp; -
T本身不是一个类型,它是一个正式的“类型参数”。如果你说例如TempClass<int> temp;编译器将为新类TempClass<int>生成代码,该类对应于模板TempClass,所有“T”实例都替换为“int”,temp将成为那种新型。现在应该清楚你不能“通过T”,那么你能澄清一下你想做什么吗? -
@Tomás Badan 实际上我想要实现的是从 MyClass 调用在 TempClass 中定义的函数。
-
@gx_ 感谢您的回答。那么如果我需要调用3种不同类型的函数,我需要有3个模板类的对象来实现吗?
-
@Mike 你的例子没有为我提供足够的信息准确的答案......(如果你的“3 种类型”在你为
MyClass编写代码时是固定的并且是已知的,那么也许是的(但是不一定是 member 变量,如果要调用的函数是static,则您不需要对象),否则您可能希望将MyClass本身设为模板,如下面的答案所示... )