C++ 构造要求一个未在 .h 中定义的结构

标签 c++ constructor enums

我必须在项目中做一些更改,所以我必须更改一些类。这段代码是由另一个人编写的,我在执行任务时发现了一个非常奇怪的问题(或者至少尝试直到出现这种野生蘑菇)

我有下一个 ClassA.cpp,我想删除 m_ElemVar(enumType):

CClassA::CClassA(): m_iIntVariable(0), m_fFloatVar(0.0f), m_ElemVar(enumType1)       
{
   // more variables initizalized there
   otherVariable = value;
   ...
}

.h :

#include "CMyElement"
class CClassA
{
  public:
     CClassA();
     virtual ~CClassA();
 private:
     CMyElement  m_ElemVar; // THIS is the var 
     int  m_iIntVariable;
     float m_fFloatVar;
     ...
 }

所以问题是我不想要 m_ElemVar(enumType1) 在那里因为我会在另一个地方初始化它,但是如果我删除它,当我构建类或项目时它说:

error: no matching function for call to ‘CMyElemnt::CMyElemnt()
candidates are CMyElemnt::CMyElemnt(enumTypeName)

例如,如果我删除 m_fFloarVar,它不会提示....这让我很困惑,因为正如您在 .h 中看到的那样,没有声明任何内容,所以我明白这个构造函数不应该期望任何东西。

我已经清理并重新构建它,并且还搜索了谷歌但没有找到任何帮助,因此非常感谢。非常感谢

最佳答案

看起来 CMyElemnt 没有无参数构造函数,因此您必须调用一个接受枚举的构造函数。如果您不能更改其界面,也许您可​​以稍后重新分配它。

关于C++ 构造要求一个未在 .h 中定义的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31188393/

相关文章:

c++ - 强类型枚举中范围解析背后的基本原理

c++ - 是否可以将枚举值与声明分开?

enums - Dart 如何获取枚举的 "value"

c++ - 为什么我的代码没有完成 Sound::release() 调用?

c++ - C++ 中的默认结构初始化

c++ - 无法在c中获取当前时间

c++ - 我不明白的关于默认构造函数的一些事情

c++ - 深层复制构造函数中的问题

c++ - C++中的无锁多生产者多消费者

c++ - UML 类图(操作隔间)