VS MFC如何添加基类CObject的派生类,总是提示找不到基类CObject

求好心人解答
MFC多文档程序在创建时就好像没发现CObject基类,是不是要自己从类库中导入
求具体解决方法,感谢大神了

mfc

5个回答

确实比较奇怪,如果visual studio正确安装,并使用向导创建多文档类型程序,应该不会出现此问题。
以上情况如果不能保证,很有可能stdafx.h头文件内容不全,没有包含必要的头文件。

可以试试手动加入类文件,其头文件如下:

#pragma once
#include "afx.h"  //此行是关键
class CDraw :
    public CObject
{
public:
    CDraw();
    ~CDraw();
};

其执行文件如下:

#include "stdafx.h"
#include "Draw.h"


CDraw::CDraw()
{
}


CDraw::~CDraw()
{
}

如果对您有帮助,请采纳答案好吗,谢谢!

qq_32817535
qq_32817535 厉害
大约一年之前 回复
fight_in_dl
战在春秋 回复csdn_GIS_k: 问题解决了就好,可以采纳答案吗(在我的答案区域鼠标停留几秒就能看到采纳按钮),非常感谢~~
大约 2 年之前 回复
csdn_GIS_k
csdn_GIS_k 对的,我是新建一个类然后突然间想到了是不是没有包含头文件,结果果然是,已经自我解决了 谢谢 ,爱你们么么哒
大约 2 年之前 回复

只要是mfc程序,必然有cobject啊,你有包含stdafx.h么,你是用向导方式创建的多文档程序么?

图片说明

图片说明

你手动修改一下不就可以了吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mfc 类的串行化 类的写方法(ar<<)不执行
使用DECLARE_SERIAL / IMPLEMENT_SERIAL宏来实现自定义类的串行化来保存类的数据, 严格按照以下几个步骤来做: (1) Derive your class from CObject. (定义一个基类为CObject的类) (2) Override the Serialize member function.(重写串行化函数) (3) Use the DECLARE_SERIAL macro in the class declaration.(在类声明文件中使用DECLARE_SERIAL宏) (4) Define a constructor with no arguments (a default constructor).(定义一个无参数的构造函数) (5) Use the IMPLEMENT_SERIAL macro in the class implementation file.(在实现文件中使用IMPLEMENT_SERIAL宏) 但是却遇到自定义类的串行化方法没有调用的问题 最先遇到的是读取的时候一个类的ar>>没有调用,查明了原因,是因为在调用该类的读方法时,读取的数据并不属于该类(没有读到FF FF FF 01这个标志)。 后来,又遇到了保存数据时,一个类的ar<<方法不调用,请问,这又是怎么回事呢,还请指教。
在VS2005中单个工程里建立两个CWinThread的派生类,编译时发出C2084错误,怎么解决?
**=====描述=====** 我在VS2005中用项目->添加类添加了两个CWinThread类的派生类——CMyThread与CFloatWndThread,现在编译时报C2084错误,百度上都说是函数有定义了两个函数体,但我没发现有什么重定义啊~~请问大家有何高招?? **=====代码=====** //MyThread.h #include "stdafx.h" // CMyThread class CMyThread : public CWinThread { DECLARE_DYNCREATE(CMyThread) protected: CMyThread(); // 动态创建所使用的受保护的构造函数 virtual ~CMyThread(); afx_msg void OnStateChange(UINT wp,LONG lp); NOTIFYICONDATA caps; public: virtual BOOL InitInstance(); virtual int ExitInstance(); HICON capson,capsoff; CWinThread* ThreadP; protected: DECLARE_MESSAGE_MAP() }; #endif // MyThread.cpp : 实现文件 // #include "stdafx.h" #include "Project.h" #include "MyThread.h" // CMyThread IMPLEMENT_DYNCREATE(CMyThread, CWinThread) CMyThread::CMyThread() { } CMyThread::~CMyThread() { } //下面代码没有错误,省略。。 //FloatWndThread.h #pragma once #ifndef _FLOAT_WINDOW_THREAD_ #define _FLOAT_WINDOW_THREAD_ #include "FloatWnd.h" // CFloatWndThread class CFloatWndThread : public CWinThread { DECLARE_DYNCREATE(CFloatWndThread) DECLARE_DYNAMIC(CFloatWndThread) static CObject* PASCAL CFloatWndThread::CreateObject(); protected: virtual ~CFloatWndThread(); public: CFloatWndThread(); virtual BOOL InitInstance(); virtual int ExitInstance(); protected: DECLARE_MESSAGE_MAP() private: HMODULE hMod; CFloatWnd* pFWnd; }; #include "FloatWndThread.cpp" #endif // FloatWndThread.cpp : 实现文件 // #ifndef _FLOAT_WINDOW_THREAD_CPP #define _FLOAT_WINDOW_THREAD_CPP #include "stdafx.h" #include "Project.h" #include "FloatWndThread.h" #include "FloatWnd.h" //using namespace Inflict; // CFloatWndThread IMPLEMENT_DYNCREATE(CFloatWndThread, CWinThread) CFloatWndThread::CFloatWndThread(){} CFloatWndThread::~CFloatWndThread(){} BOOL CFloatWndThread::InitInstance() { hMod = LoadLibraryA("FloatWnd.dll"); if(hMod) { pNewFloatWnd NewFloatWnd = (pNewFloatWnd)::GetProcAddress(hMod,"NewFloatWnd"); pShowFloatWnd ShowFloatWnd = (pShowFloatWnd)::GetProcAddress(hMod,"ShowFloatWnd"); if(NewFloatWnd&&ShowFloatWnd) { pFWnd=NewFloatWnd(); if(pFWnd) { ShowFloatWnd(pFWnd,NULL); //pFWnd->DoModal(); } } } // TODO: 在此执行任意逐线程初始化 return TRUE; } int CFloatWndThread::ExitInstance() { // TODO: 在此执行任意逐线程清理 return CWinThread::ExitInstance(); } BEGIN_MESSAGE_MAP(CFloatWndThread, CWinThread) END_MESSAGE_MAP() // CFloatWndThread 消息处理程序 #endif =====输出===== 1>FloatWndThread.cpp 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(11) : error C2535: “CRuntimeClass *CFloatWndThread::_GetBaseClass(void)”: 已经定义或声明成员函数 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“CFloatWndThread::_GetBaseClass”的声明 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(11) : error C2086: “const CRuntimeClass CFloatWndThread::classCFloatWndThread”: 重定义 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“CFloatWndThread::classCFloatWndThread”的声明 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(11) : error C2535: “CRuntimeClass *CFloatWndThread::GetThisClass(void)”: 已经定义或声明成员函数 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“CFloatWndThread::GetThisClass”的声明 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(11) : error C2535: “CRuntimeClass *CFloatWndThread::GetRuntimeClass(void) const”: 已经定义或声明成员函数 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“CFloatWndThread::GetRuntimeClass”的声明 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(12) : error C2535: “CObject *CFloatWndThread::CreateObject(void)”: 已经定义或声明成员函数 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“CFloatWndThread::CreateObject”的声明 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(12) : error C2084: 函数“CObject *CFloatWndThread::CreateObject(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“CreateObject”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(12) : error C2084: 函数“CRuntimeClass *CFloatWndThread::_GetBaseClass(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“_GetBaseClass”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(12) : error C2374: “classCFloatWndThread”: 重定义;多次初始化 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“classCFloatWndThread”的声明 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(12) : error C2084: 函数“CRuntimeClass *CFloatWndThread::GetThisClass(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“GetThisClass”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(12) : error C2084: 函数“CRuntimeClass *CFloatWndThread::GetRuntimeClass(void) const”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(10) : 参见“GetRuntimeClass”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(15) : error C2084: 函数“CFloatWndThread::CFloatWndThread(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(18) : 参见“{ctor}”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(19) : error C2084: 函数“CFloatWndThread::~CFloatWndThread(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(15) : 参见“{dtor}”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(23) : error C2084: 函数“BOOL CFloatWndThread::InitInstance(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(19) : 参见“InitInstance”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(44) : error C2084: 函数“int CFloatWndThread::ExitInstance(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(20) : 参见“ExitInstance”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(50) : error C2084: 函数“const AFX_MSGMAP *CFloatWndThread::GetMessageMap(void) const”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(23) : 参见“GetMessageMap”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(50) : error C2084: 函数“const AFX_MSGMAP *CFloatWndThread::GetThisMessageMap(void)”已有主体 1> d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.h(23) : 参见“GetThisMessageMap”的前一个定义 1>d:\我的文档\visual studio 2005\projects\project\project\floatwndthread.cpp(55) : fatal error C1020: 意外的 #endif ​
依旧无法无法访问 private 成员(在“CObject”类中声明)
``` ``` 写了几个文件 都对操作符 = 重载 构造拷贝,还是出错 ``` //data.h #ifndef _DATA_H_ #define _DATA_H_ class CData { public: CData() { a=_T(""); b=_T(""); c=_T(""); d=_T(""); e=_T(""); f=_T(""); g=_T(""); } CData(CString Da,CString Db,CString Dc,CString Dd,CString De,CString Df,CString Dg) { a=Da; b=Db; c=Dc; d=Dd; e=De; f=Df; g=Dg; } CData (const CData& _data) { this->a=_data.a; this->b=_data.b; this->c=_data.c; this->d=_data.d; this->e=_data.e; this->f=_data.f; this->g=_data.g; } CData& CData::operator=(const CData _data) { this->a= _data.a; this->b= _data.b; this->c= _data.c; this->d= _data.d; this->e= _data.e; this->f= _data.f; this->g= _data.g; return *this; } CString a; CString b; CString c; CString d; CString e; CString f; CString g; }; #endif ``` ``` //CCDemoRecord.h ```#pragma once #include "data.h" typedef CArray<CData,CData&> CDemoRecord;class CCDemoRecord { public: CCDemoRecord(void); ~CCDemoRecord(void); CCDemoRecord(const CCDemoRecord& _data) { this->record.a=_data.record.a; this->record.b=_data.record.b; this->record.c=_data.record.c; this->record.d=_data.record.d; this->record.e=_data.record.e; this->record.f=_data.record.f; this->record.g=_data.record.g; } CCDemoRecord& CCDemoRecord::operator=(const CCDemoRecord _data) { this->record.a=_data.record.a; this->record.b=_data.record.b; this->record.c=_data.record.c; this->record.d=_data.record.d; this->record.e=_data.record.e; this->record.f=_data.record.f; this->record.g=_data.record.g; return *this; } CData record; }; ```
MFC序列化机制运算符“>>”的问题
最近在学习MFC的序列化机制,写了一个CChild类,里面有两个成员变量m_name 和m_birthday 加了声明宏和实现宏,并重写了seralize函数。 class CChild :public CObject { DECLARE_SERIAL(CChild) public: CString name; CString birthday; virtual void Serialize(CArchive& ar); CChild(); CChild& operator=(CChild &child); }; IMPLEMENT_SERIAL(CChild, CObject, 1) CChild::CChild() {} void CChild::Serialize(CArchive& ar) { if (ar.IsStoring()) { ar << name << birthday; } else { ar >> name >> birthday; } } CChild & CChild::operator=(CChild &child) { name = child.name; birthday = child.birthday; return *this; } 存入数据没有问题,但是在取出数据时尝试了两种调用方法; 方法1(报错): CChild kid2; file.Open(_T("G:/child.txt"), CFile::modeRead); CArchive ar2(&file, CArchive::load); ar2 >> &kid2; ar2.Close(); file.Close(); 报错:错误 1 error C2679: 二进制“>>”: 没有找到接受“CChild *”类型的右操作数的运算符(或没有可接受的转换) 方式2:(成功) CChild * pChild = new CChild; file.Open(_T("G:/child.txt"), CFile::modeRead); CArchive ar2(&file, CArchive::load); ar2 >> pChild; ar2.Close(); file.Close(); 问题1: 为什么第一种方式出错,而第二种方式成功? 问题2: 为什么对于<<操作符直接将对象取地址传入可行,而>>操作符不行? 查看了声明宏和实现宏的展开发现: << 的声明为: operator<<(CArchive& ar, const CObject* pOb); 而>>的声明为: operator>>(CArchive& ar, CObject*& pOb); 个人理解CObject* pOb 和CObject*& pOb 的区别仅在于前者在函数内部不能改变传入指针pOb的值,而后者可以。但是只要是传入CObject*的指针都是应该可以的啊。为什么对于>>操作符直接将对象取地址传入就不行呢?
C++ 封装dll时用到了CObject 可以被其他程序语言调用吗?
VS2010下封装dll,有几个类继承了CObject,CSocket; 这样生产的dll可以被windows下的java调用吗?
MFC菜单点击后直接闪退
自己编了一个MFC程序,菜单点击开始仿真后直接闪退,不知道原因,求助各位大佬 我想通过点击菜单中的开始仿真,创建线程,调用工作线程输入数据的CPP,但是点了后闪退 这是菜单按钮(开始仿真)的程序 void CpbnDlg::OnStart() { CMenu *pMenu=AfxGetApp()->m_pMainWnd->GetMenu();//注意m_pMainWnd得到的正确性。 pMenu->EnableMenuItem(ID_Start,MF_DISABLED|MF_GRAYED);//把开始设置为不可用// TODO: Add your command handler code here m_bPauseContinue.SetTextColor(RGB(0,0,0)); pThread=::AfxBeginThread((AFX_THREADPROC)main,this); hThreadMea=pThread->m_hThread; m_bPauseContinue.EnableWindow(TRUE); } 这是调试报的错误: Detected memory leaks! Dumping objects -> {670} normal block at 0x027DCB30, 8 bytes long. Data: <l 8 > 6C F9 38 04 00 00 00 00 {669} normal block at 0x027DCAE8, 8 bytes long. Data: < 8 > 10 FA 38 04 00 00 00 00 f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\thrdcore.cpp(306) : {637} client block at 0x027D9E88, subtype c0, 68 bytes long. a CWinThread object at $027D9E88, 68 bytes long f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp(4500) : {529} client block at 0x027D91B0, subtype c0, 56 bytes long. a CObject object at $027D91B0, 56 bytes long f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp(4500) : {504} client block at 0x027D94C0, subtype c0, 56 bytes long. a CObject object at $027D94C0, 56 bytes long f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp(4500) : {496} client block at 0x027D92B8, subtype c0, 56 bytes long. a CObject object at $027D92B8, 56 bytes long f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\wincore.cpp(4500) : {482} client block at 0x027D72C0, subtype c0, 56 bytes long. a CObject object at $027D72C0, 56 bytes long pbn.cpp(60) : {473} client block at 0x027D6DE0, subtype c0, 12 bytes long. a CObject object at $027D6DE0, 12 bytes long Object dump complete. 线程 'Win32 线程' (0x210c) 已退出,返回值为 1 (0x1)。 程序“[6164] pbn.exe: 本机”已退出,返回值为 1 (0x1)。 单步调试发现没进去工作线程的CPP。
关于DECLARE_MESSAGE_MAP()
我正在学习《深入浅出MFC》的六大关键技术仿真,目前正在看消息映射和消息传递。但是在看Frame8范例的时候有个地方不太明白, class CCmdTarget:public CObject { public : //省略 DECLARE_MESSAGE_MAP() } class CWnd:public CCmdTarget { public: //省略 DECLARE_MESSAGE_MAP() } 基类CCmdTarget已经有DECLARE_MESSAGE_MAP()这条语句了,怎么子类CWnd继承的时候还要再写一次呢?
请教大家一个《深入浅出mfc》里关于CRuntimeClass的问题
enter code here #0001 #include "my.h" #0002 #0003 extern CMyWinApp theApp; #0004 #0005 static char szCObject[] = "CObject"; #0006 struct CRuntimeClass CObject::classCObject = #0007 { szCObject, sizeof(CObject), 0xffff, NULL, NULL }; #0008 static AFX_CLASSINIT _init_CObject(&CObject::classCObject); #0009 //前面几行代码使得classCObject成为了链表的pFirstClass,后面这一行为什么又要把它初始化为NULL呢?? #0010 CRuntimeClass* CRuntimeClass::pFirstClass = NULL; #0011 #0012 AFX_CLASSINIT::AFX_CLASSINIT(CRuntimeClass* pNewClass) #0013 { #0014 pNewClass->m_pNextClass = CRuntimeClass::pFirstClass; #0015 CRuntimeClass::pFirstClass = pNewClass; #0016 } #0017 #0018 CRuntimeClass* CObject::GetRuntimeClass() const #0019 { #0020 return &CObject::classCObject; #0021 } 问题 #0009 //前面几行代码使得classCObject成为了链表的pFirstClass,后面这一行为什么又要把它初始化为NULL呢?? pFirstClass是一个静态变量,必须先进行初始化,但是前面先对它赋值了,后面又初始化,搞不明白
release C++ MFC 触发刷新消息死机
错误情况1: > kernel32.dll!7c812fd3() [下面的框架可能不正确和/或缺失,没有为 kernel32.dll 加载符号] T5CAPP14.exe!CTH_PIMSBaseDoc::UpdateAllViewsEx(CView * pSender=0x00000000, long lHint=0, CObject * pHint=0x00000000) 行76 C++ T5CAPP14.exe!CTH_PIMSMngTreeView::OnSelchanged(tagNMHDR * pNMHDR=0x0012f76c, long * pResult=0x0012f458) 行639 C++ mfc90.dll!78669559() 内部代码: void CTH_PIMSBaseDoc::UpdateAllViewsEx(CView* pSender, LPARAM lHint , CObject* pHint ) { this->UpdateAllViews(pSender,lHint,pHint); bModified = FALSE; }
使用map添加窗口类时出现错误
头文件内容 typedef std::map<int,CDlgVideo> mapDlgVideo; typedef mapDlgVideo::iterator mapDlgVideoIter; mapDlgVideo m_mapDlgVideo; CPP文件内容 for(int i = 0 ; i < m_nMaxEncodeNum; ++i ) { CDlgVideo video ; BOOL ret = video.Create(CDlgVideo::IDD); video.SetVideoIndex(i); video.SetActive(FALSE); m_mapDlgVideo.insert(mapDlgVideo::value_type(i, video)); } 请帮我分析下这段代码的错误 错误信息为错误 error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明) 分析问题出现在m_mapDlgVideo.insert(mapDlgVideo::value_type(i, video)); 处但是不知道为什么出错
关于构造函数的一个小问题
class CObject { public: CObject::CObject() { } // 加了CObject::是什么意思呢? };
VC6移植到VS2010下编译通不过
我从CArray派生了一个CArrayGraph2来定义二维数组 并且也重载operator=, 然后 typedef CArray<int, int> ARRINT; typedef CArrayGraph2<ARRINT, ARRINT> ARRINT2; 定义了一个ARRINT2作为int类型的二维数组,但在函数里只要 一调用该数组的RemoveAll就编译通不过,不晓得是哪有问题, 但是在VC6下,或者在VS2010正常项目下都可以编译通过, 仅仅在动态库工程里编译通不过 动态库里 定义了一个函数 TESTARRAY_API int fntestarray(ARRINT2& arrInterIndex) { arrInterIndex.RemoveAll();//把该行屏蔽就可以编译通过 return 0; } https://pan.baidu.com/s/1boBOiZX 这里可以下载工程源码 报错信息如下: d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxtempl.h(262): error C2248: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明) 1> d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(535) : 参见“CObject::operator =”的声明 1> d:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(509) : 参见“CObject”的声明 1> 此诊断出现在编译器生成的函数“CArray<TYPE,ARG_TYPE> &CArray<TYPE,ARG_TYPE>::operator =(const CArray<TYPE,ARG_TYPE> &)”中 1> with 1> [ 1> TYPE=int, 1> ARG_TYPE=int 1> ]
Clist中包含Clist的变量,无法初始化 “很有意思的一个题目” 大侠路过请留步,谢谢
最外层:typedef Clist<structA, structA&> MOUDLE; structA{ type A; ... MAC mac; } MAC的定义为:typedef Clist<string, string&> MAC; 在全局或局部定义MOUDLE md;时报错: 1>D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxtempl.h(771): error C2248: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明) 1> D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h(535) : 参见“CObject::operator =”的声明 1> D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h(509) : 参见“CObject”的声明 1> 此诊断出现在编译器生成的函数“CList<TYPE,ARG_TYPE> &CList<TYPE,ARG_TYPE>::operator =(const CList<TYPE,ARG_TYPE> &)”中 1> with 1> [ 1> TYPE=std::string, 1> ARG_TYPE=std::string & 1> ] **源码如下:** #include <afxtempl.h> using namespace std; typedef CList< string, string&> lMac; typedef struct MOUDLE { string name; lMac lMac1; int n_Count; int max_Count; int version; public: void operator= (MOUDLE& m) { name = m.name; lMac1 = m.lMac1; n_Count = m.n_Count; max_Count = m.max_Count; version = m.version; } }MOUDLE; typedef CList<MOUDLE, MOUDLE&> L_MOUDLE; L_MOUDLE mou;
dev- c++ 编译错误 如图如图如图
求大神来帮我找错误,,如图。最后一张是编译时dev的报错内容 ``` //AFX.h #ifndef __AFX_H_ #define __AFX_H_ #include <windows.h> class CObject; struct CRuntimeClass { // Attribute LPCSTR m_lpszClassName; int m_nObjectSize; UINT m_uSchema; CObject* (__stdcall m_pfnCreateObject)(); CRuntimeClass* m_pBaseClass; // operator CObject* CreateObject(); BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass); // Implements CRuntimeClass* m_pNextClass; }; CObject* CRuntimeClass::CreateObject() { if(m_pfnCreateObject == NULL) return NULL; return m_pfnCreateObject; } BOOL CRuntimeClass::IsDerivedFrom(const CRuntimeClass* pBaseClass) { const CRuntimeClass* pClassThis = this; while(pClassThis != NULL) { if(pClassThis == pBaseClass) { return TRUE; } pClassThis = pClassThis->m_pBaseClass; } return FALSE; } #define RUNTIME_CLASS(class_name)((CRuntimeClass*)&class_name::class##class_name) class CObject { public: virtual CRuntimeClass* GetRuntimeClass() const; virtual ~CObject(); public: BOOL IsKindOf(const CRuntimeClass* pClass) const; public: static const CRuntimeClass classCObject; }; inline CObject::~CObject(){} static const CRuntimeClass CObject::classCObject= { "CObject", sizeof(CObject), 0xffff, NULL, NULL, NULL }; CRuntimeClass* CObject::GetRuntimeClass() const { return RUNTIME_CLASS(CObject); } BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const { CRuntimeClass* pClassThis = GetRuntimeClass(); return pClassThis->IsDerivedFrom(pClass); } #endif //main.cpp #include <iostream> #include "AFX.h" using namespace std; class CPerson : public CObject { public: virtual CRuntimeClass* GetRuntimeClass() const { return RUNTIME_CLASS(CPerson); } static CRuntimeClass classCPerson; }; CRuntimeClass CPerson::classCPerson= { "CPerson" }; int main() { CObject* pMyCObject = new CObject; if(pMyCObject->IsKindOf(RUNTIME_CLASS(CPerson))) { cout << "Is CPerson inherit\n"; delete pMyCObject; } else { delete pMyCObject; } return 0; } ```
关于maven打包jar导入别的项目使用时出现ClassNotFoundException
这个项目的内容是简单的在Java中模仿Qt的信号与槽,用的是vscode自动生成 的一个maven-quick-start项目,首先放上pom.xml ![图片说明](https://img-ask.csdn.net/upload/201906/21/1561120335_880380.png) 这个配置已经不是原来的样子了,因为试了网上很多方法,已经改的面目全非 源码里面也没有用别的什么第三方库 下面放一下源代码: 第一个CObject.java里面东西有点多,放个开头片段 ![图片说明](https://img-ask.csdn.net/upload/201906/21/1561120749_974670.png) 还弄了个异常类 ![CException.java](https://img-ask.csdn.net/upload/201906/21/1561120863_814461.png) 剩下是三个注解,放其中一个Signal,剩下的是Slot和UseSignalSlot ![Slot.java](https://img-ask.csdn.net/upload/201906/21/1561120975_181436.png) 打包的时候就用mvn install,生成jar后导入eclipse项目中使用, 但无论怎么样都会显示这样: ![图片说明](https://img-ask.csdn.net/upload/201906/21/1561121678_526474.png) 这是eclipse的一段简短演示代码 ![图片说明](https://img-ask.csdn.net/upload/201906/21/1561121768_752019.png) 试了N多种方法都不行,求大神zhi'jiao'yi'er
CStringArray 无 =重载
class CStringMatrix { protected: CArray<CStringArray,CStringArray&> m_stringMatrix; public: CStringMatrix(void); ~CStringMatrix(void); const CString & GetAt(UINT nRow, UINT nCol); void SetAt(const CString& szCell, UINT nRow, UINT nCol); void AddRow(UINT nRow, CStringArray & stringRow); }; //注释一行报错 void CStringMatrix::SetAt(const CString& szCell, UINT nRow, UINT nCol) { CStringArray &stringRow = m_stringMatrix.GetAt(nRow); stringRow.SetAtGrow(nCol,szCell); //m_stringMatrix.SetAtGrow(nRow, stringRow); } //报错信息如下 1>d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcoll.h(590) : error C2248: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明) 1> d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(562) : 参见“CObject::operator =”的声明 1> d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(532) : 参见“CObject”的声明 此诊断出现在编译器生成的函数“CStringArray &CStringArray::operator =(const CStringArray &)”中
求助一js问题,在modal中加载多选下拉框
在使用chosen.query时遇到一问题,在select多选下拉框直接在页面中和modal中 加载出现不一样的结果,在modal中无法获取控件的宽度,跟踪js是offsetWidth为0, 代码如下: ``` <div class="form-group"> <p class="col-sm-2 bolder control-label no-padding-right" for="form-field-cobject">多选测试:</p> <div class="col-sm-9"> <select class="chosen-select tag-input-style" multiple="multiple" id="cobject" name="cobject"></select> </div> </div> function selectInit() { $("#cobject").html('<option value="">请选择</option>'); $.post(hear + "/sys/dept/getdept.do", function(data) { //ajax获取数据 }); $("#cobject").trigger("chosen:updated"); $("#cobject").chosen(); } ``` ![图片说明](https://img-ask.csdn.net/upload/201708/30/1504086492_945735.png)
在VC++6.0中构建CDib类,但是编译之后出现错误:无法找到CDib.h文件,请问如何解决?
以下是dib.CPP程序: #include "stdafx.h" #include "CDib.h" #include "windowsx.h" CDib::CDib() { size=0; } CDib::~CDib () { GlobalFreePtr(m_pBitmapInfo); } void CDib::LoadFile (const char * dibFileName) { strcpy(m_fileName,dibFileName); CFile dibFile(m_fileName,CFile::modeRead); dibFile.Read ((void *)&bitmapFileHeader,sizeof(BITMAPFILEHEADER)); if(bitmapFileHeader.bfType==0x4d42) {等等。。。 以下是dib.h中的程序: #ifndef ___CDIB_H #define ___CDIB_H class CDib :public CObject { public: RGBQUAD * m_pRGB; BYTE * m_pData; UINT m_numberOfColors; BOOL m_valid; BITMAPFILEHEADER bitmapFileHeader; BITMAPINFOHEADER*m_pBitmapInfoHeader; BITMAPINFO*m_pBitmapInfo; BYTE * pDib; DWORD size; public: CDib(); ~CDib(); char m_fileName[256]; char * GetFileName();//返回位图文件名 BOOL IsValid(); DWORD GetSize();//返回位图文件的大小 UINT GetWidth();//返回位图的宽度 UINT GetHeight();//返回位图的高度 UINT GetNumberOfColors();//返回位图颜色数目 RGBQUAD * GetRGB();//返回颜色表首地址 BYTE * GetData();//返回图像数据首地址 BITMAPINFO * GetInfo();//返回图像信息结构首地址 WORD PaletteSize(LPBYTE lpDIB); WORD DIBNumColors(LPBYTE lpDIB); void SaveFile(const CString filename); public: void LoadFile(const char * dibFilename); } 编译出现错误: fatal error C1083: Cannot open include file: 'CDib.h': No such file or directory
构造函数必须带参数吗
#ifndef _KEYDLL_H #define _KEYDLL_H class AFX_EXT_CLASS CKeyHook : public CObject { public: CKeyHook(); ~CKeyHook(); HHOOK Start();//安装钩子 BOOL Stop();//卸载钩子 }; #endif![图片说明](https://img-ask.csdn.net/upload/201501/05/1420448242_962504.png)
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
前端 | 2. 正则
转载请注明以下: 本文转自清自以敬的博客:https://blog.csdn.net/qq_45791147 文章目录1.转义2.正则表达式初步2.1.匹配字符2.1.1.组成元素2.1.2.基础正则的设计 1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转义...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
Docker 从入门到掉坑
Docker 介绍 简单的对docker进行介绍,可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟机还是有较为明显的出入的。我大致归纳了一下,可以总结为以下几点: docker自身也有着很多的优点,关于它的优点,可以总结为以下几项: 安装docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Doc...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问