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

问题描述 投票:1回答:1

我有一个类,其构造函数必须使用模板类参数进行初始化。现在,我需要将此类的构造函数传递给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
c++
1个回答
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); 
}
© www.soinside.com 2019 - 2024. All rights reserved.