【发布时间】:2018-11-10 14:01:52
【问题描述】:
我有一个模板类,它被分成一个.hpp 文件和一个.ipp,其中有一个相当长的类型。在重构时,我想为该类型编写一个类型别名,以便代码更具可读性。但无论我做什么,我都无法在 .ipp 文件中识别类型别名。
这是我正在尝试做的一个简单示例:
container.hpp:
template <class T>
class container {
public:
using TypeAlias = T;
container(const TypeAlias& a);
const TypeAlias& getA() const;
private:
TypeAlias a;
};
#include "container.ipp"
container.ipp:
template <class T>
container<T>::container(const TypeAlias& a) : a(a)
{
}
template <class T>
const TypeAlias& container<T>::getA() const
{
return this->a;
}
编译时出现以下错误:
./container.ipp:8:7: error: unknown type name 'TypeAlias'
const TypeAlias& container<T>::getA() const
显然在这种情况下,引入TypeAlias 没有多大意义,但在我的实际程序中,它可能会产生巨大的影响。我可以做些什么来使 .ipp 文件中的 TypeAlias 可用?
【问题讨论】:
-
我假设
#include "container.ipp"实际上是在 container.hpp 的末尾,而不是在 container.ipp 的开头。 -
@aschepler 是的,我复制错了。
标签: c++ templates typedef using