【问题标题】:Bidirectional template class dependencies c++双向模板类依赖 C++
【发布时间】:2012-10-15 21:30:45
【问题描述】:

问题是 A 类依赖于 B 类,反之亦然。编译器会抱怨未知类型。通常的解决方案是前向声明类。但是如何声明模板类呢?

【问题讨论】:

    标签: c++ templates dependencies forward-declaration


    【解决方案1】:

    我花了一段时间才找到解决方案,所以我想我可以通过在此处发布“模板”来让别人的生活更轻松。

    // Header A.h
    template<class z, class w = float>
    class B;
    
    template<class x, class y = double>
    class A
    {
        B mb;
    }
    
    
    // Header B.h
    template<class x, class y = double>
    class A;
    
    template<class z, class w = float>
    class B
    {
        A mA;
    }
    

    此外,您还可以更改模板声明中的可选参数。

    【讨论】:

    • 说 B* 或 A* 没有任何意义,因为完整的类型是 A&lt;something, something&gt;*。模板名称本身不是类型。此外,以下划线、两个下划线或一个下划线和一个大写字母开头的标识符被标准保留给编译器/库实现。
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 2013-03-26
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多