C++ C++;错误:应为类型说明符
当我尝试像这样使用C++ C++;错误:应为类型说明符,c++,C++,当我尝试像这样使用LoggerStream时,我得到了“预期的类型说明符”: const LoggerStream记录器(L“测试组件”) 这里是我尝试使用日志流的地方: #include "Logger.h" #include "TestComponent.h" namespace ophRuntime { struct TestComponent::TestComponentImpl { private: LoggerStream logger(
LoggerStream
时,我得到了“预期的类型说明符”:
const LoggerStream记录器(L“测试组件”)代码>
这里是我尝试使用日志流的地方:
#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() {
}
}
const ophRuntime::LoggerStream logger(L"Test Component");
LoggerStream
位于命名空间ophRuntime
中,因此您的定义必须
const ophRuntime::LoggerStream logger(L"Test Component");
当使用类LoggerStream
时,需要使用命名空间名称ophRuntime
:
#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() {
}
}
const ophRuntime::LoggerStream logger(L"Test Component");
你提到过名称空间吗?您需要编写以下内容之一:
using ophRuntime::LoggerStream;
const LoggerStream logger(L"Test Component");
或
或
不能像这样构造类成员:-
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”
不是参数的类型说明符。logger的声明已经在运行时命名空间中。尽管如此,我还是尝试添加这样一个明确的规范,但没有任何效果。显示生成错误的代码会很有帮助。您是否忘记了添加“Logger.h”
,例如。。。我看不出Logger_WIN与此有什么关系:编译它不会出错吧?是吗?@Roddy我添加了代码。其他地方没有错误。现在我们正在取得进展;-)检查我的答案。啊,该死的-我已经在这一点上对自己进行了重点教育(最烦人的解析),所以我没有被它困住。。。哈哈,最好的计划等等。谢谢你的毅力:FWWI我在C++ 11上,所以类初始化是可能的()。我只是用{}替换了(),一切都很好。