复制构造函数在singleton类上调用

dod*_*gel 3 c++ singleton copy-constructor visual-studio-2012

我有以下问题.我有一个带有getInstance成员函数的单例,它返回一个实例.我在代码中调用它,由于某种原因,VC尝试调用复制构造函数.为什么是这样?我该如何解决?

标题:

class FileSystemEntryCollection {
public:
    static FileSystemEntryCollection &getInstance();
private:
    FileSystemEntryCollection();
    FileSystemEntryCollection(FileSystemEntryCollection const&);
    void operator=(FileSystemEntryCollection const&);
}
Run Code Online (Sandbox Code Playgroud)

源文件:

FileSystemEntryCollection &FileSystemEntryCollection::getInstance() {
    static FileSystemEntryCollection instance = FileSystemEntryCollection();
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

以下行调用复制构造函数:

auto collection = FileSystemEntryCollection::getInstance();
Run Code Online (Sandbox Code Playgroud)

我试着留下相关的代码,让我知道是否需要其他东西.

Jam*_*lis 5

auto collection = FileSystemEntryCollection::getInstance();
Run Code Online (Sandbox Code Playgroud)

需要是:

auto& collection = FileSystemEntryCollection::getInstance();
    ^
Run Code Online (Sandbox Code Playgroud)

auto 它自己永远不是一个参考类型.

  • @Diederik:没有作业. (2认同)