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