C++ 错误:需要类型说明符
C++ Error: Expected a type specifier
当我尝试使用这样的LoggerStream
时,我得到"期望的类型说明符":
const LoggerStream logger(L"Test Component");
这是我尝试使用LoggerStream
的地方:
#include "Logger.h"
#include "TestComponent.h"
namespace ophRuntime {
struct TestComponent::TestComponentImpl {
private:
LoggerStream logger(L"Test Component");
NO_COPY_OR_ASSIGN(TestComponentImpl);
};
TestComponent::TestComponent() : impl(new TestComponentImpl()) {
}
bool TestComponent::Init() {
}
}
你不能像这样构造类成员:-
struct TestComponent::TestComponentImpl
{
private:
LoggerStream logger(L"Test Component");
相反,请在构造器中使用初始化列表,如下所示:
struct TestComponent::TestComponentImpl
{
LoggerStream logger;
TestComponent::TestComponent() : impl(new TestComponentImpl()),
logger("L"Test Component")
{
}
...
}
而且我认为您已经犯了"最令人烦恼的解析",因为编译器认为logger
一定是一个函数,并且它抱怨L"Test Component"
不是参数的类型说明符。
你在任何地方提到命名空间吗?您需要编写以下任一内容:
using ophRuntime::LoggerStream;
const LoggerStream logger(L"Test Component");
或
using namespace ophRuntime;
const LoggerStream logger(L"Test Component");
或
const ophRuntime::LoggerStream logger(L"Test Component");
LoggerStream
在命名空间中ophRuntime
因此您的定义必须是
const ophRuntime::LoggerStream logger(L"Test Component");
使用类LoggerStream
时,您需要使用命名空间名称ophRuntime
:
const ophRuntime::LoggerStream logger(L"Test Component");
相关文章:
- 缺少类型说明符,显式类型为"缺少错误"
- 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 出错(预期的类型说明符)
- 为什么转换函数声明不需要至少一个定义类型说明符
- C++需要所有声明的类型说明符和预期的非限定 id(需要调试帮助)
- printf 数据类型说明符复杂问题
- C++错误:"class name"之前的预期类型说明符
- 缺少类型说明符和另一个问题
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- 在C++中出现错误之前,无效使用了不完整的类型和所需的类型说明符
- 缺少类型说明符 - int 假定 声明静态成员后出错
- 不能在类型说明符中定义联合
- 没有带有字符串数组的存储类或类型说明符
- 警告:函数使用不带尾随返回类型的'auto'类型说明符
- 仅为某些模板专用化定义转换运算符:预期类型/预期类型说明符
- 在 C++ 中出现unique_ptr错误之前的预期类型说明符
- 有没有办法将类型说明符存储在变量中
- C 期望类对象的类型说明符
- 是无符号的int"简单类型说明符"
- 在 vscode 上编译错误.类型说明符是 C++11 扩展