gpt4 book ai didi

c++ - 如何为内部类声明运算符<<

转载 作者:行者123 更新时间:2023-11-27 23:29:30 26 4
gpt4 key购买 nike

//cannot declare operator<<(...) here:
//forward declarations:
class External;

template<class T, class Y>
class External::Internal;

template<class T, class Y>
std::ostream& operator<<(std::ostream& out, const External::Internal<T,Y>&);

class External
{
template<class T, class Y>
class Internal
{};

Internal data_;

void print() {
/*out is a std::ostream*/
out << data_;
}
};

template<class T, class Y>
std::ostream& operator<<(std::ostream& out, const External::Internal<T,Y>&)
{ }

我确实想实现 operator<<对于 Internal但是当我尝试使用来自 External 的运算符(operator)调用时出现问题: 在此类定义下声明此运算符时看不到此运算符,并且似乎无法在此类定义之上声明此运算符。

最佳答案

如果你问如何定义 Internal<>::operator<<作为 friend ,那么:

class External
{
template<class T, class Y>
class Internal
{
friend std::ostream& operator <<(std::ostream& out, const Internal&)
{
// impl
return out;
}
};

Internal<Foo, Bar> data_;

public:
void print() const
{
/*out is a std::ostream*/
out << data_;
}
};

关于c++ - 如何为内部类声明运算符<<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6520605/

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