C++ 如何在.cpp文件中的函数的返回类型(签名)中使用头文件中定义的别名?
我有一个类,C++ 如何在.cpp文件中的函数的返回类型(签名)中使用头文件中定义的别名?,c++,alias,signature,using,using-declaration,C++,Alias,Signature,Using,Using Declaration,我有一个类,Tracker,我在其中声明了一个别名 从Tracker.h: class Tracker { ... using ArgsMap = std::unordered_map<std::string, std::string>; std::shared_ptr<ArgsMap> getArgsMapForTask(std::string task); ... } 类跟踪器{ ... 使用ArgsMap=std::无序映射; std::shared_ptr ge
Tracker
,我在其中声明了一个别名
从Tracker.h
:
class Tracker {
...
using ArgsMap = std::unordered_map<std::string, std::string>;
std::shared_ptr<ArgsMap> getArgsMapForTask(std::string task);
...
}
类跟踪器{
...
使用ArgsMap=std::无序映射;
std::shared_ptr getArgsMapForTask(std::string任务);
...
}
在.cpp文件中,我在其中定义函数:
#include Tracker.h
...
// ArgsMap here gives error: Use of undeclared identifier 'ArgsMap'
std::shared_ptr<ArgsMap> Tracker::getArgsMapForTask(std::string taskName)
{
ArgsMap a; // this gives no error, compiler recognizes ArgsMap
}
#包括Tracker.h
...
//ArgsMap在此给出错误:使用未声明的标识符“ArgsMap”
std::shared_ptr Tracker::getArgsMapForTask(std::string taskName)
{
ArgsMap a;//这不会给出错误,编译器会识别ArgsMap
}
如何在函数签名中使用
ArgsMap
?问题不是别名在头文件中,这完全不相关
问题是别名是在类的作用域中定义的,因此,如果您想在类外使用它,您需要对其进行限定:
Tracker::ArgsMap
考虑一下,拥有一个头文件并通过#include
将其包括在内,就像复制和粘贴它的contante来代替#include
。我包括了头文件,但是,如果在返回类型中使用别名,我仍然会收到一个无法识别别名的编译器错误。您能告诉我们错误和头文件吗?请看,当然可以。我更新了问题,将两者都包括在内,使用了带有错误的实际代码。我认为这是一个打字错误StudioTasksTracker
应该是Tracker
,不是吗?