将带有模板类参数的构造函数传递给另一个函数

时间:2015-09-25 17:00:13

标签: c++

我有一个类,其构造函数必须使用模板类参数进行初始化。现在,我需要将此类的构造函数传递给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

1 个答案:

答案 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); 
}