C++ 如何在类的方法参数中使用模板

C++ 如何在类的方法参数中使用模板,c++,class,templates,C++,Class,Templates,我在类中使用带有方法参数的模板时遇到问题。 下面是一个例子,但不是我的真实代码,它有问题,为了简化代码 类声明: class Test { public: Test(); template <class T> void PrintData(T info); }; Test::Test(){} void Test::PrintData(T info){ cout << info << endl; } int main(){

我在类中使用带有方法参数的模板时遇到问题。
下面是一个例子,但不是我的真实代码,它有问题,为了简化代码

类声明:

class Test {

public:
    Test();
    template <class T>
    void PrintData(T info);
};
Test::Test(){}

void Test::PrintData(T info){
    cout << info << endl;
}
int main(){
    Test test;
    test.PrintData<const char*>("Thank you.");

    return 0;
}
类测试{
公众:
Test();
模板
无效打印数据(T信息);
};
类定义:

class Test {

public:
    Test();
    template <class T>
    void PrintData(T info);
};
Test::Test(){}

void Test::PrintData(T info){
    cout << info << endl;
}
int main(){
    Test test;
    test.PrintData<const char*>("Thank you.");

    return 0;
}
Test::Test(){}
无效测试::打印数据(T信息){
cout
模板
无效测试::打印数据(T信息){

将是该函数的正确定义。除此之外,还包括标题中的定义。

在定义您的
PrintData
函数的类定义部分,需要引用模板

你的定义是这样的

模板
无效测试::打印数据(T信息){

cout您需要将模板成员函数的定义放在头文件中,它应该可以正常工作

标题:

#include <iostream>

class Test 
{
public:
    Test();
    template <class T>
    void PrintData(T info);
};

template <class T>
void Test::PrintData(T info)
{
    std::cout << info << std::endl;
}
#包括
课堂测试
{
公众:
Test();
模板
无效打印数据(T信息);
};
模板
无效测试::打印数据(T信息)
{
标准::cout