将带有模板类参数的构造函数传递给另一个函数
passing a constructor with template class arguments to a another function
我有一个类,它的构造函数必须用模板类参数初始化。现在,我需要将这个类的构造函数传递给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);
}
相关文章:
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 构造函数/函数声明参数列表中的统一初始化
- 在c++中为链接列表创建复制构造函数/函数
- 如何声明模板函数,以便可以在类构造函数/函数中传递
- 在C 中,如何调用构造函数函数
- 在C++中构造模板函数时出现编译错误 C2664 和 C2440
- Rcpp:构造模板函数
- 采用nulltpr_t的构造函数:函数定义不声明参数
- 使用基于模板的构造函数构造std::函数
- 构造函数:函数不接受3个参数
- 就地构造 std::函数目标
- 将字符串构造作为函数参数传递
- C++:从模板化方法构造std::函数
- 构造std::函数的向量时出现编译器错误
- 构造<stl_hashtable>函数参数是否在
- libstdc++和libc++在用lambda构造std::函数时的不同行为
- 编译器构造-带有函数的类的c++sizeof()
- 使用 c++11 构造映射函数
- 调用构造与函数原型混淆
- 在不调用initializer_list构造函数的情况下,将不可复制、不可移动的类型构造为函数形参