Как на примере этого класса исправить ошибку компиляции?
template <class T>
class A
{
T b;
struct C
{
T d;
};
C* func(T f);
public:
void func2(T f);
};
template <class T>
A<T>::C* A<T>::func(T f)//ошибка
{
C* c = new C;
c->d = f;
return c;
}
template<class T>
void A<T>::func2(T f)
{
C* some = func(f);
b = f;
}
Ошибка (clang 10):
error: missing 'typename' prior to dependent type name 'A::C'
Указать, что это тип - добавив typename
:
typename A<T>::C* A<T>::func(T f)
Вы можете использовать trailing return type:
Объявление:
template <class T>
class A
{
/* code */
auto func(T f) -> C*;
};
Определение:
template<typename T>
auto A<T>::func(T f) -> C*
{
/* code */
}
Ознакомиться с деталями можно на следующих ресурсах:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть условная легаси функция (2к строк) с кучей точек завершения
Есть вот такой вызов ajax, который работает по клику на option