Наследовать от вложенного класса внутри унаследованного класса - PullRequest
0 голосов
/ 23 января 2020

У меня какая-то странная проблема, которая уже описана в Вложенный класс наследует от вложенного класса , но я начинаю немного отчаяться.

У меня есть 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: Да, я знаю некоторые вещи все еще отсутствуют (конструктор копирования и т. д.), но это не должно быть проблемой здесь.

...