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
,不是吗?