Ошибка вложенных пространств имен C ++ - ожидаемая ошибка спецификатора типа - PullRequest
0 голосов
/ 04 января 2019

Я ищу решение этой проблемы, и я думаю, что оно имеет что-то из-за вложенных пространств имен.

Ниже мы имеем соответствующую часть:

creation.hpp Это реализация интерфейса

#ifndef IMPLEMENTATION_H
#define IMPLEMENTATION_H

#include "class_b.hpp"

namespace XPTO {
class Implementation : public XPTO::Interface {

    public:

        Implementation();
        ~Implementation() override;

        ReturnStatus
        initialize() override;

    private:

        CLASS_B::Class_B b; // namespace CLASS_B, class Class_B
    };
}
#endif

implementation.cpp

#include "implementation.hpp"

XPTO::Implementation::Implementation() {}

XPTO::ReturnStatus
XPTO::Implementation::initialize() {
    b = new CLASS_B::Class_B::Class_B(); 
    //namespace ClASS_B, class Class_B and constructor Class_B()
}

class_b.hpp

#ifndef CLASS_B_H
#define CLASS_B_H

namespace CLASS_B{

class Class_B {

    public:

        Class_B();
        ~Class_B();

        void initialize();
    };
}
#endif

Ошибка ошибка: ожидаемый спецификатор типа b = new CLASS_B :: Class_B :: Class_B ();

Компилятор указывает на пространство имен CLASS_B.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

В объявлении отсутствует тип b, который должен быть указан перед именем идентификатора. Попробуйте изменить

b = new CLASS_B::Class_B::Class_B(); 

до

CLASS_B::Class_B *b = new CLASS_B::Class_B(); 

Если вы намеревались инициализировать закрытый член b в методе initialize(), вам необходимо объявить его как указатель, поскольку new возвращает указатель.

0 голосов
/ 04 января 2019

Я думаю, что эта строка - ваша проблема:

b = new CLASS_B::Class_B::Class_B(); 

Это должно быть только:

b = new CLASS_B::Class_B(); 

Предполагая, что b уже объявлен где-то еще:

CLASS_B::Class_B()* b;

Если вы выделяете блок памяти с помощью new, вам нужен указатель для указания на этот блок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...