gpt4 book ai didi

c++ - 函数定义的类外声明中不可能完全限定类名

转载 作者:行者123 更新时间:2023-12-02 09:16:59 25 4
gpt4 key购买 nike

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

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

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

:8:1: error: no member named 'C' in 'float4x4'; did you mean simply 'C'?
float4x4 ::C::M()
^~~~~~~~~~~~

可以使用尾随返回类型来“修复”:

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

现在一切都好。

所以我认为在使用标题返回类型声明符语法时我们无法完全限定类名?

最佳答案

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

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

虽然我用 gcc 和 clang (都是 -pedantic)进行了测试,但我无法真正告诉你什么规则可以做到这一点,尽管它不是没有括号。我更喜欢尾随返回类型。

关于c++ - 函数定义的类外声明中不可能完全限定类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58913331/

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