当前位置:  开发笔记 > 编程语言 > 正文

无法在函数定义的类外声明符中完全限定类名

如何解决《无法在函数定义的类外声明符中完全限定类名》经验,为你挑选了1个好方法。

该程序导致不希望的贪婪解析的死胡同:

struct float4x4 {};
class C
{
    float4x4 M();
};

float4x4 ::C::M()
{
    return float4x4{};
}

:8:1:错误:'float4x4'中没有名为'C'的成员; 您的意思仅仅是“ C”吗?
float4x4 :: C :: M()
^ ~~~~~~~~~~~~

可以使用尾随返回类型“固定”:

auto ::C::M() -> float4x4
{}

现在一切都好。

因此,我认为在使用heading-return-type声明符语法时,我们不能完全限定类名吗?



1> formerlyknow..:

您可以使用方括号来消除歧义:

float4x4 (::C::M)()
{
    return float4x4{};
}

尽管我用gcc和clang(都是-pedantic)进行了测试,但我不能真正告诉您什么规则可以做到这一点。我更喜欢尾随返回类型。

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有