У меня есть шаблонный класс, который разбит на файл .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
, но в моей реальной программе это может иметь огромное значение.Что я могу сделать, чтобы TypeAlias был доступен в файле .ipp
?