试图引用一个被删除的函数

Visual C++ 2015 - attempting to reference a deleted function

本文关键字:一个 删除 函数 引用      更新时间:2023-10-16

在用vc++ 2015编译代码时,我得到了两个错误,我没有得到vc++ 2013。下面是两个代码片段:

CArray<CQualifiedFolderObject*, CQualifiedFolderObject*> CQualifiedFolderObject::mQualifiedFolders =
         CArray<CQualifiedFolderObject*, CQualifiedFolderObject*>()

sProfileArray COesInterface::g_arrProfiles[] = {
    {FALSE, },
    {FALSE, },
    {FALSE, },
    {FALSE, },
    {FALSE, CStringArray()},    
};

在这两种情况下,我得到C2280 "试图引用已删除的函数"错误。在第一种情况下,它是针对CArray的,在第二种情况下,它是针对CStringArray的。

我对c++比较陌生。我想了解为什么这个编译在2013年而不是2015年,以及我能做些什么来解决这个问题。

检查类的定义,此错误意味着您的类定义了自定义析构函数,或者其中一个函数更改了另一个函数的默认生成。

例如:如果你声明并定义了destruct-or,你将不会得到默认的复制构造函数。

有六个,检查规则或默认全部。

语法如下:如果你试图复制它会产生和上面一样的错误。

struct noncopyable
{
  noncopyable() =default;
  noncopyable(const noncopyable&) =delete;
  noncopyable& operator=(const noncopyable&) =delete;
};