请在以下代码中建议错误

kindly suggest the mistake in following code?

本文关键字:错误 代码      更新时间:2023-10-16
#include<iostream.h>
template<class T>
class myclass;
template<class T>
void f(myclass<T> &c);
template<class T>
class myclass
{
    private:
        T value;
    public:
        friend void f(myclass<T> &c);
    T getvalue()
    {
        return value;
    }
    void setvalue(T v)
    {
        value=v;
    }
};
template<class T>
void f(myclass<T> &c)
{
    cout<<endl<<"function called:n";
    cout<<c.getvalue()<<endl;
}
int main()
{
    myclass<int> object;
    object.setvalue(6);
    f(object);
    return 0;
}

此代码是关于具有友元函数的模板。运行代码时,我收到以下错误:

错误:第 22 行中未定义对 F(Myclass &) 的引用

请提前建议。

像这样声明友元函数

friend void f<>(myclass<T> &c);

同样在"新"C++标题iostream中应指定为:

#include <iostream>

你应该使用指令

using namespace std;

如果您不想更改程序中的其他代码。

您错过了在friend声明中指定模板:

template<typename U>
friend void f(myclass<U> &c);

请在此处查看完整的工作示例。