【发布时间】:2021-08-18 10:31:57
【问题描述】:
我有一个班级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?
【问题讨论】:
-
考虑拥有一个头文件并通过
#include包含它就像复制并粘贴它的内容来代替#include。 -
我包含了标头,但如果别名在返回类型中使用,我仍然会收到编译器错误,因为别名无法识别
-
你能告诉我们错误和头文件吗?请参阅how-to-ask。
-
当然。我更新了问题以包含两者,使用带有错误的实际代码
-
我认为有一个错字。
StudioTasksTracker应该是Tracker,不是吗?
标签: c++ alias signature using using-declaration