gpt4 book ai didi

c++ - 如何在模板类中使用嵌套类作为类型?

转载 作者:行者123 更新时间:2023-11-30 02:15:33 26 4
gpt4 key购买 nike

我在 .hpp 文件中有一个模板类,如下所示。

template < typename GraphR,
typename AbsV,
typename GraphT = GraphTs< GraphR > >
class ForwardF {

public:
class AbsVC{
Some definitions};

};

我有另一个类,我想在其中使用下面给出的 AbsVC 类型。

#include <a.hpp>

template < typename GraphR,
typename AbsV,
typename GraphT = GraphTs< GraphR > >
class Interleave
: public ForwardF< GraphR, AbsV, GraphT > {


private:
using InTable = std::unordered_map< GraphT, std::vector<AbsVC>>;

};

我收到错误消息,指出 AbsVC 未在此范围内定义。请注意,ForwardF 是基类,Interleave 是派生类。所以在基类中定义的 AbsVC 在派生类中应该是可见的。请告诉我如何解决这个问题。

最佳答案

So AbsVC which is defined in the base class should be visible in the derived class.

这对普通类是正确的,但对模板类不是。

您需要特别提到 AbsVC 是一个 typename,它依赖于具有特定模板参数的类模板 ForwardF

因此您可以在类模板 Interleave 中执行此操作。

using AVC = typename ForwardF<GraphR, AbsV, GraphT>::AbsVC;

然后将InTable定义为:

using InTable = std::unordered_map< GraphT, std::vector<AVC>>;

这应该有效。因为我没有 MCVE ,我无法验证。

关于c++ - 如何在模板类中使用嵌套类作为类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56033313/

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