我有一个类,其构造函数必须使用模板类参数进行初始化。现在,我需要将此类的构造函数传递给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
您的代码有几个问题。第一个也很简单就是你将类名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);
}