当我尝试使用像这样的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")
    {
    }

    ...
}

而且我认为您已经对"Most Vexing Parse"犯规了,因为编译器认为logger必须是一个函数,并且提示L"Test Component"不是参数的类型说明符。

10-04 14:43