gpt4 book ai didi

c++ - 命名空间内具有函数的循环包含

转载 作者:行者123 更新时间:2023-12-04 17:05:47 24 4
gpt4 key购买 nike

我开始学习 C++,最近遇到了两个头文件循环依赖的问题。
我已经尝试过声明类和命名空间,也在一个单独的项目中尝试过,但没有找到任何解决方案。无论我做什么,该函数都无法访问类私有(private)成员。

在这里,我稍微简化了问题。


#pragma once
#include "B.h"

class Player {
private:
int m_number;
public:
friend void Byte::getDataChunk(Player& p);
};



B.h
#pragma once
#include <iostream>

#include "A.h"

class Player;

namespace Byte {
void doOtherStuff() {
//other Stuff
}

void getDataChunk(Player& p) {
std::cout << p.m_number;
doOtherStuff();
}
}

我真的很想将类和命名空间保存在单独的文件中,但我看不到任何方法。提前感谢您的帮助!

最佳答案

您需要更改A.h包括 getDataChunk() 的前向声明在命名空间 Byte :

#pragma once
#include "B.h"

class Player;

namespace Byte {
void getDataChunk(Player& p);
}

class Player {
private:
int m_number;
public:
friend void Byte::getDataChunk(Player& p);
};

另请注意,在头文件中包含函数定义(即 getDataChunk() 中的 B.h )会让您头疼。

关于c++ - 命名空间内具有函数的循环包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61725632/

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