如何在 .cpp 文件中的函数的 return 类型(签名)中使用在头文件中定义的别名?
How can I use an alias thats defined in a header file, in the return type (signature) of a function in the .cpp file?
我有一个 class、Tracker
,我在其中声明了一个别名
来自Tracker.h
:
class Tracker {
...
using ArgsMap = std::unordered_map<std::string, std::string>;
std::shared_ptr<ArgsMap> getArgsMapForTask(std::string task);
...
}
在 .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
}
如何在函数签名中使用ArgsMap
?
问题不在于别名在头文件中,那是完全不相关的。
问题是别名是在class的范围内定义的,所以如果你想在class之外使用它,你需要限定它:Tracker::ArgsMap
.
我有一个 class、Tracker
,我在其中声明了一个别名
来自Tracker.h
:
class Tracker {
...
using ArgsMap = std::unordered_map<std::string, std::string>;
std::shared_ptr<ArgsMap> getArgsMapForTask(std::string task);
...
}
在 .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
}
如何在函数签名中使用ArgsMap
?
问题不在于别名在头文件中,那是完全不相关的。
问题是别名是在class的范围内定义的,所以如果你想在class之外使用它,你需要限定它:Tracker::ArgsMap
.