У меня есть класс, конструктор которого должен быть инициализирован аргументами класса шаблона. Теперь мне нужно передать конструктору этого класса другому методу в 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
Спасибо, минус 'printFunction (Student);' была просто ошибкой при размещении моего вопроса здесь. Ваше решение сработало, но я не понял требования объявления шаблона 'выше друга' void printFunction (Student ); 'inside Class. Почему мы не можем просто написать 'friend void printFunction (Student ) ;.'. Я знаю, тогда компилятор выдает ошибку, но почему? –
user2756695
@ user2756695 Я отредактировал код, чтобы использовать форвардное объявление класса 'Student' и специализацию друга' printFunction'. Отвечает ли это на ваш вопрос? – Rostislav
@ user2756695 если вы допустили ошибку при отправке вопроса - тогда пришло время исправить это, чтобы мы знали, каков ваш реальный вопрос? – PiotrNycz