c++ - 朋友,前向声明,C++
问题描述
所以这让我有点困惑。两者都不会在其他不完整类型等之前声明。Game
之前不会去,Hero
因为Hero test1
。Hero
不会去之前Game
因为friend void Game::vitals(Hero&);
这是不可能的循环依赖吗?
class Game
{
// ...
void vitals(Hero&);
Hero test1;
};
class Hero : public Character
{
// ...
public:
friend void Game::vitals(Hero&);
};
解决方案
所以Hero
必须先去,Game
因为class Game { ... Hero test1; ... };
需要Hero
完全定义。
但friend void Game::vitals(Hero&);
可以简单地返工为friend class Game;
. 将一个类的一种方法作为另一个类的朋友很少使用,并且没有多大意义,因为任何形式的友谊都假定两段代码相互“信任”。所以你不妨把全班都交朋友。
另一种工作是重新设计设计,这样就不需要友谊了。这可能是您设计中的一个弱点。
推荐阅读
- javascript - 在 React 中使用 useState() 和 useEffect() 时设置来自 axios 的状态值
- parquet - Dremel,重复字段中的空值
- regex - Elasticsearch/Kibana 中的正则表达式
- c++ - 如何检查 std::array 已声明但未显式初始化
- oauth-2.0 - AcquireTokenInteractive:当用户放弃登录过程时我该怎么办?
- go - 获取 AD 组中所有用户的 sAMAccountName
- python - 将 Python 字典嵌套到 Pandas 数据帧
- r - 解决 Rstudio 中的 openssl 安装错误
- mysql - 连接两个表以显示彼此相关的数据
- android - Android Studio 4.1.1:没有看到“导出加密密钥以在 Google Play 应用签名中注册已发布应用”的选项