gpt4 book ai didi

c++ - .h 文件中的转发声明以使用友好类

转载 作者:行者123 更新时间:2023-11-28 05:00:47 26 4
gpt4 key购买 nike

template <typename T>
class linked;

template <typename T>
class node {
...
friend class linked<T>;
};

template <typename T>
class linked {
...
};

请注意,我已经向前声明了链接类,以便将其声明为友好的节点类,但现在我想为每个类制作不同的 .h 和 .cpp 文件。我将如何在其中进行前向声明。

最佳答案

节点.hpp

#pragma once

template <typename T> class linked;
template <typename T> class node {
...
friend class linked<T>;
};

链接.hpp

#pragma once
#include "node.hpp" // just because I guess you will use it in linked implementation
template <typename T> class linked {
...
};

因此您可以在不包含 linked.hpp 的情况下继续使用节点。您甚至可以将其保留为私有(private) header 并且不会发送给用户。但是如果链接某些代码想要使用链接类,只需包含 linked.hpp。

编辑作为一种选择节点.hpp

#pragma once

template <typename T> class node {
...
class linked;
friend class linked<T>;
};

链接.hpp

#pragma once
#include "node.hpp"
template <typename T> class node<T>::linked {
...
};

关于c++ - .h 文件中的转发声明以使用友好类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46077436/

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