我有一个类,其构造函数必须使用模板类参数进行初始化。现在,我需要将此类的构造函数传递给main()
中的另一个方法。但我试图这样做,它会抛出一个错误,我无法得到它的解决方案。
template<class K>
Class Student
{
friend void printFunction();
public:
Student(K val)
{std::cout<<val;}
};
void printFunction(Student object)
{
......
}
int main()
{
Student <int> object(10);
printFunction(object); //This line throws an error
}
以下是错误消息:
error: use of class template 'Student' requires template arguments
答案 0 :(得分:2)
您的代码存在一些问题。首先,您可以将类名Student
传递给printFunction
。您应该拨打printFunction(object)
。
其次,要让printFunction
接受模板类Student
的实例,您还需要将其设为模板。见下面的工作示例。
#include <iostream>
template<class K>
class Student;
template<class K>
void printFunction(Student<K> object)
{
std::cout << object.val;
}
template<class K>
class Student
{
friend void printFunction<>(Student<K>);
public:
Student(K val) : val(val) {}
private:
K val;
};
int main()
{
Student<int> object(10);
printFunction(object);
}