C++私有拷贝构造函数问题

JF *_*ion 3 c++ syntax

我正在构建一个小型C++应用程序,我正在寻找为我的参考持有者制作一个私有的复制构造函数.

当我在我的主要课程中使用我的课程时,一切正常,但当我尝试使用Google Test测试它时,我收到一条错误,指出我的复制构造函数是私有的

TEST (Library, constructorParams) {
    Library lib = Library("my Library");
    ASSERT_EQ("my Library", lib.getNom());
}
Run Code Online (Sandbox Code Playgroud)

Library.h(我的.cpp中没有复制构造函数和赋值运算符的定义)

class Library {
public:
    ...
private:
    ...

    Library (const Library& obj);
    Library & operator=(const Library& obj);
};
Run Code Online (Sandbox Code Playgroud)

为什么我的私有拷贝构造函数出错(可能在我的测试中使用不当?)?

jua*_*nza 8

这里

Library lib = Library("my Library");
Run Code Online (Sandbox Code Playgroud)

您在语义上从RHS上构造的临时对象执行复制构造.即使编译器可能会优化副本,复制构造函数也需要公开访问.

试试这个:

Library lib("my Library");
Run Code Online (Sandbox Code Playgroud)

详细了解复制初始化.