gpt4 book ai didi

c++ - 如何访问在结构/类范围内声明的别名?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:14 25 4
gpt4 key购买 nike

用下面的代码

标题.h

namespace some_name {
struct foo {
// using alias
using MyMap = std::map<double, some_class* const>;
MyMap* GetMap();
MyMap* map_;
}
}

源.cpp

#include "Header.h"

// using declaration
using some_name::foo;

MyMap* foo::GetMap(){
...
return map_;
}

当我编译时,我得到一个编译器错误,指出:

error: ‘MyMap’ does not name a type

MyMap* foo::GetMap() {

^

但是,如果我在头文件中适本地定义 GetMap(),则一切正常,但如果我将其移至源文件,则会出现该错误。我在这里缺少什么?

最佳答案

线

using some_name::foo;

在您的代码中,只需将名称 foo 导入当前范围。这意味着只要编译器看到非限定名称 foo,它就会知道您正在使用 some_name::foo

虽然这对 MyMap 没有帮助。 MyMap 的范围是 foo 所以为了访问你仍然需要使用 foo:: 就像

foo::MyMap* foo::GetMap()

另一种选择是添加另一个 using 语句以引入 MyMap 但这会污染具有该名称的范围,因此您可能不希望这样做。如果你这样做,那么你可以使用

// using declaration
using some_name::foo;
using MyMap = some_name::foo::MyMap;

MyMap* foo::GetMap(){
...
return map_;
}

关于c++ - 如何访问在结构/类范围内声明的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794025/

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