在单例类上调用了复制构造函数 [英] Copy constructor called on singleton class

查看:40
本文介绍了在单例类上调用了复制构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下问题。我有一个带有getInstance成员函数的单例函数,该函数返回一个实例。我在代码中的某个地方调用它,出于某种原因,VC试图调用复制构造函数。这是为什么呢?我如何修复此问题?

标题:

class FileSystemEntryCollection {
public:
    static FileSystemEntryCollection &getInstance();
private:
    FileSystemEntryCollection();
    FileSystemEntryCollection(FileSystemEntryCollection const&);
    void operator=(FileSystemEntryCollection const&);
}

源文件:

FileSystemEntryCollection &FileSystemEntryCollection::getInstance() {
    static FileSystemEntryCollection instance = FileSystemEntryCollection();
    return instance;
}

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

auto collection = FileSystemEntryCollection::getInstance();

我已尝试在相关代码中保留内容,如果需要其他内容,请告诉我。

推荐答案

auto collection = FileSystemEntryCollection::getInstance();

需要为:

auto& collection = FileSystemEntryCollection::getInstance();
    ^

auto本身从不是引用类型。

这篇关于在单例类上调用了复制构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆