gpt4 book ai didi

声明为友元的 C++ 重载运算符

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:28 24 4
gpt4 key购买 nike

我在 Xcode C++ 程序中将重载运算符声明为友元

template <typename T> friend class list_template;
template <typename T> friend ostream& operator<< (ostream &, list_template<T> &);

第二次声明时出现错误,list_template 尚未声明?

如果我 #include 声明 list_template 的文件,我会遇到更多问题......

最佳答案

如果我明白你想做什么,你就错过了 list_template 的全局前向声明:

MyClass.h

// forward declarator. must match definition in list_template.h
template<typename T> class list_template;

class MyClass
{
public:
MyClass() {};
virtual ~MyClass() {};

template<typename T> friend class list_template;
template<typename T> friend ostream& operator <<(ostream&, const list_template<T>&);
};

list_template.h

template<typename T>
class list_template
{
public:
list_template() {};
virtual ~list_template() {};

// declare friend ostream operator <<
friend ostream& operator << <>(ostream& os, const list_template<T>& lt);
};

// ostream insertion operator <<
template<typename T>
ostream& operator <<(ostream& os, const list_template<T>& lt)
{
// TODO: use lt here.
return os;
}

至少我认为这离你要去的地方很近。

关于声明为友元的 C++ 重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com