c++ - 朋友在 C++ 中不显示为公开
问题描述
我和一个在公共部分声明的朋友一起写了一个类:
class Graph {
// ... snip ...
public:
Graph()= default;
friend Graph operator+ (const Graph &g1, const Graph &g2);
};
但是当我在 main.cpp 中编写以下内容时:
Graph g{};
g.
我的 IDE 没有显示operator+
为可能的完成。
到底是operator+
不是公开的?这是怎么回事?
解决方案
g.
将使您的 IDE 显示Graph
成员函数。
这是一个免费(非会员)功能:
friend Graph operator+ (const Graph &g1, const Graph &g2);
如果您添加一个成员函数,如下operator+=
所示,可能会出现:
class Graph {
private:
// ... snip ...
public:
Graph() = default;
Graph& operator+=(const Graph& rhs); // this may show up
friend Graph operator+(const Graph &g1, const Graph &g2);
};
Graph& Graph::operator+=(const Graph& rhs) {
// ... impl ...
return *this;
}
Graph operator+(const Graph &g1, const Graph &g2) {
Graph retval(g1);
return retval += g2;
}
注意:通过像上面一样使用operator+=
内部的成员函数operator+
,free 函数将不再需要是 a friend
。
推荐阅读
- c++ - 在 Visual Studio 2019 中添加服务引用
- physx - 需要获得对象/身体的位置
- razor - cshtml.cs 中的 GoTo 函数转到 cshtml 页面
- javascript - 搜索过滤器不适用于 setState 上的反应表:React JS
- javascript - 如何在 create-react-app 中添加外部 js 库
- node.js - Laravel 框架适合短信群发应用吗
- python - 将字典中的值从 str 转换为 float
- c++ - 在 C++ STL 的映射中搜索键时,出现以下错误
- url - 如何在 .NET Core 中本地化路由操作/控制器
- php - 上传多张图片时如何随机生成