首页 > 解决方案 > 构造函数如何调用导致 Visual Studio 2019 发出 C26444 警告?

问题描述

据我所知,构造函数是 void 类型。鉴于下面指定的代码,为什么 Visual Studio 2019 编辑器会使用 C26444 警告标记指示的构造函数调用?

下面是相关的实现源码:

#pragma once

#include "Class_dB_CG.h"

CG::CG() {}

CG::~CG() {}

CG::CG(const CG& rhs) {}

CG::CG(ER* e)

{

CG();       ***//warning on this line***

er = e;

}


**The header file is here:**

#pragma once

#include "Class_dB_ER.h"

class CG

{

private:

ER*   er = 0;

public:

CG();

~CG();

CG(const CG& rhs);

CG(ER* e);

};

标签: c++

解决方案


在这段代码中:

CG::CG(ER* e)
{ 
  CG(); // warning on this line
  er = e;
}

你没有调用构造函数。您只是在创建一个被丢弃的临时对象。这可能是警告所指的内容。

如果你想调用构造函数,你可以这样做:

CG::CG(ER* e) : CG()
{
  er = e;
}

推荐阅读