gpt4 book ai didi

c++ - yyy 中的错误 xxx 未命名类型

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

编译文件error_xxx_does_not_name_a_type.cpp ,为什么会出现错误
error_xxx_does_not_name_a_type.cpp:5:28: error: ‘A’ in ‘struct std::pair<bool, int>’ does not name a type std::pair<bool, int> ::A::B::C::D::get_i()

// error_xxx_does_not_name_a_type.h
#pragma once
#include <utility>

namespace A{ namespace B{ namespace C{
struct D
{
std::pair<bool, int> get_i();
std::pair<bool, int> get_j();
std::pair<bool, int> get_k();
int get_l();
};
}}}

// error_xxx_does_not_name_a_type.cpp
#include "error_xxx_does_not_name_a_type.h"

#if 1 // gives me the error
std::pair<bool, int> ::A::B::C::D::get_i()
{ return {true, 10}; }
#endif
// But none of the below do
// missing ::
std::pair<bool, int> A::B::C::D::get_j()
{ return {true, 10}; }
// trailing return type
auto ::A::B::C::D::get_k()->
std::pair<bool, int>
{ return {true, 10}; }
// return type int
int ::A::B::C::D::get_l()
{ return 10; }

我用 g++ -Wall -Wextra -std=c++14 -c error_xxx_does_not_name_a_type.cpp 编译了和 g++ (Ubuntu 5.3.0-3ubuntu1~14.04) 5.3.0 20151204

最佳答案

因为 (空格)在这种情况下是无关紧要的,并且 ::用作范围解析运算符,应用于 std::pair<bool, int> .

对于编译器,

std::pair<bool, int>::A...

相同
std::pair<bool, int>:: A...

和一样

std::pair<bool, int> ::A...

一样
std::pair<bool, int> :: A...

因此,编译器正在寻找 Astd::pair<bool, int>范围内这显然失败了。

参见:Space(s) before/after the scope resolution operator

关于c++ - yyy 中的错误 xxx 未命名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40959850/

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