簡體   English   中英

C ++嵌套名稱空間錯誤-預期的類型說明符錯誤

[英]C++ nested namespaces error - expected type-specifier error

我正在尋找此問題的解決方案,並且由於嵌套的命名空間,我認為它有所幫助。

在下面,我們有相關的部分:

Implementation.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 =新的CLASS_B :: Class_B :: Class_B();

編譯器指向命名空間CLASS_B。

我認為這是您的問題:

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

它只需要是:

b = new CLASS_B::Class_B(); 

假設b已經在其他地方聲明:

CLASS_B::Class_B()* b;

如果使用new分配內存塊,則需要一個指向該內存塊的指針。

您缺少聲明中必須在標識符名稱之前指定的b類型。 嘗試改變

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

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

如果打算在initialize()方法中初始化私有成員b,則需要將其聲明為指針,因為new返回了指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM