pimpl STL和DLL

时间:2016-01-17 06:45:32

标签: c++ dll stl

class __declspec(dllexport) Foo
{
private:
    struct Impl;
    Impl *pimpl;
public:
    Foo();
    virtual ~Foo();
    Impl &GetVector();
};

Foo::Impl
{
std::vector<Bar> m_vec;
}

Foo::Foo() : pimpl( new Impl )
{
}

Foo::~Foo()
{
    delete pimpl;
}

Impl &Foo::GetVector()
{
    return *pimpl;
}

我收到MSVC 2010的编译错误:

  

缺少';'在'&amp;'之前

有没有一种简单的方法可以解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

检查2XYZ功能的返回类型。您的Foo::GetVector结构包含在Impl类中,因此要访问它,您必须编写Foo