[英]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.