У меня какая-то странная проблема, которая уже описана в Вложенный класс наследует от вложенного класса , но я начинаю немного отчаяться.
У меня есть 4 класса в 2 разных файла (я не думаю, что это действительно имеет значение), я также вырежу не важные вещи из классов для лучшего обзора
Request.h (с классом Request и BaseCtx)
#ifndef REQUEST_H
#define REQUEST_H
#include <string>
#include <map>
class Request
{
public:
Request() {};
Request(Request &orig) {};
class BaseCtx {};
~Request();
/* ... More methods and functions */
private:
/* ... More methods and functions */
};
#endif
Тогда есть мой унаследованный класс в p_TuStRequest.h (TuStRequest и TuStCtx)
#ifndef P_TU_ST_REQUEST_H
#define P_TU_ST_REQUEST_H
/*#include "Request.h"*/
class TuStRequest : public Request {
public:
TuStRequest() {};
TuStRequest(TuStRequest &orig);
TuStRequest(std::string requestData) {};
class TuStCtx : public Request::BaseCtx {
std::string teid;
};
private:
};
#endif
И мой компилятор (g cc версия 4.2.4 (Gentoo 4.2.4-r01 .16 p1.1) сообщает мне следующее:
p_TuStRequest.h: 14: ошибка: ожидаемое имя класса перед маркером {{'Makefile: 431: рецепт для цели' p_TuStController.o 'не выполнен
Для тех, кто не знаком с версиями компилятора, версия 4.2.4 немного раньше поддержки c ++ 11 (так в основном C ++ 98)
Это какая-то проблема, потому что компилятор (который я не могу обновить) старый и делает не поддерживает это или я сделал что-то не так в принципе?
Если это действительно проблема с компилятором, есть ли способ обойти это? Если я удаляю вложенный класс в TuStRequest, все строится нормально, но мне нужна вторая структура, чтобы предотвратить использование voidpointers (я действительно не хочу использовать voidpointers для контекста)
PS: Да, я знаю некоторые вещи все еще отсутствуют (конструктор копирования и т. д.), но это не должно быть проблемой здесь.