小编Mik*_*nes的帖子

Clang模板不完整类型

我有以下代码在Visual Studio和g ++下编译好但在Clang我得到错误"错误:'ns :: B'是一个不完整的类型"

#pragma once
namespace ns
{
    class B;

    class A
    {
        friend class B;
        class Inner
        {
        public:
            int x;
            Inner(int x) : x(x) {}
        };
    public:
        template<typename T>
        T getB(int i)
        {
            B b = B(Inner(i));
            return T(b);
        }

    };
}
Run Code Online (Sandbox Code Playgroud)

BH

#pragma once
#include "A.h"

namespace ns
{
    class B
    {
        A::Inner i;
    public:
        B(A::Inner i) : i(i)
        {}

        operator int() const
        {
            return i.x;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include "A.h"
#include "B.h" …
Run Code Online (Sandbox Code Playgroud)

c++ templates clang

2
推荐指数
1
解决办法
315
查看次数

标签 统计

c++ ×1

clang ×1

templates ×1