我在自己的工程中添加了一个类CLei,让它继承自COleDocument,再改成CObject;
问题是我讲CLei不带参的默认构造函数改成带参的构造函数CLei(int row,int col);
后就出现了这样的报错:error C2512: 'CLei' : no appropriate default constructor available
为什么,按照C++的语法来说,我觉得这样子在头文件和源文件都改了之后应该是不会有错的,为什么还是抱错了呢
问题是我讲CLei不带参的默认构造函数改成带参的构造函数CLei(int row,int col);
后就出现了这样的报错:error C2512: 'CLei' : no appropriate default constructor available
为什么,按照C++的语法来说,我觉得这样子在头文件和源文件都改了之后应该是不会有错的,为什么还是抱错了呢
解决方案 »
- 如何得到全部文件路径?
- 求助:用于记录Log日志的常用的c/c++类库有哪些?
- wince 摄像头应用程序
- 使用别人的类库时,如何使用类中的保护成员函数呢?
- 获得本机IP时出现的问题,请大虾们进来帮忙(最后15分,以后有了再补给大家,谢谢)
- 云云:for WLX_DISPATCH_VERSION_1_3
- ★我想把一些图片,声音资源都集成在一个.DLL中(因为不想用户看到),应该如何做?在线等,急
- 关于dialog bar的问题
- 关于多线程创建
- 那位大虾能告诉我如何做能对VC有个初步的了解
- DC和多线程的问题
- CallNextHookEx有何用意?::SetWindowsHookEx参数有何意?通知主窗口,进行过滤是什么意思
添加不就行了
CLei();
CLei(int row,int col);
两个都要呗
:CObject()这样试试看或者你先把你的构造函数的定义和实现及基类相关的贴出来看看
#if !defined(AFX_LEI_H__5BF08417_B71C_4C5D_B3B6_AA9DC2D1A3DC__INCLUDED_)
#define AFX_LEI_H__5BF08417_B71C_4C5D_B3B6_AA9DC2D1A3DC__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class Clei : public CObject
{
protected:
DECLARE_DYNCREATE(Clei)
public:
Clei(int row,int col);
virtual ~Clei();
};
#endif // !defined(AFX_LEI_H__5BF08417_B71C_4C5D_B3B6_AA9DC2D1A3DC__INCLUDED_)
这是源文件:
// lei.cpp : implementation file
//#include "stdafx.h"
#include "SLL.h"
#include "lei.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CleiIMPLEMENT_DYNCREATE(Clei, CObject)Clei::~Clei()
{
}
Clei::Clei(int row,int col):CObject()
{}这是报错:
C:\Documents and Settings\user\桌面\MFC\MFC\动画原理\扫雷\SLL\lei.cpp(17) : error C2512: 'Clei' : no appropriate default constructor available
报错指向的语句:
IMPLEMENT_DYNCREATE(Clei, CObject)
IMPLEMENT_DYNCREATE(Clei, CObject)宏展开就知道了#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
CObject* PASCAL class_name::CreateObject() \
{ return new class_name; } \ //这里 你只提供了 clei( int,int ) 而没有默认构造函数所以出错
IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
class_name::CreateObject, NULL)