关于C++中的默认构造函数
我在MathManager.h中定义了Mat4x4类,部分代码如下
//MathManager.h
#include <math.h>
#include <memory.h>
...
class Mat4x4
{
public:
Mat4x4();
Mat4x4(const Mat4x4& mat);
...
};
并在MathManager.cpp中实现
而在另外的一个文件MeshManager.h中引用这个类
//MeshManager.h
#include "MathManager.h"
#include ....
class MeshNode
{
public:
MeshNode();
~MeshNode();
...
private:
Mat4x4 *m_mat;
...
};
在MeshManager.cpp中有
MeshNode::MeshNode():
m_mtlFace(NULL),m_vertex(NULL),m_texvertex(NULL),
m_normal(NULL),m_mat(new Mat4x4())
{
...
}
没有使用预编译头
编译的结果是C2501等,提示说是MeshNode::Mat4x4缺少存储类或者类型存储符。
将
Mat4x4 *m_mat;
修改为
class Mat4x4 *m_mat以后,没有C2501的错误。但是我在
默认构造函数的初始化列表中的m_mat(new Mat4x4())却提示错误C2512,没有合适的默认构造函数。
请问这是为什么?
我明明是已经提供了默认构造函数的。我在写类的时候第一个函数就默认构造函数,以前还没有出现过这种情况呢。