//以下为MyHeadFile.h中内容
class A{
.......
public:
MyOpt();
.......
}
//以下为Dlg1.Cpp中的内容
#include "MyHeadFile.h"
class CDlg1:public CDialog{
......
A m_A;
m_A.MyOpt();
......
MyClassOpt1(){
CDlg2 m_Dlg2;
m_Dlg2.DoModal();
}
......
}
//以下为Dlg2.Cpp中的内容
#include "MyHeadFile.h" //如果写这一行 编译是报告类A重复定义,否则报告类A没有被定义
class CDlg1:public CDialog{
......
A m_A;
m_A.MyOpt();
......
}
请问怎样才能让两个Dlg都能够使用类A
class A{
.......
public:
MyOpt();
.......
}
//以下为Dlg1.Cpp中的内容
#include "MyHeadFile.h"
class CDlg1:public CDialog{
......
A m_A;
m_A.MyOpt();
......
MyClassOpt1(){
CDlg2 m_Dlg2;
m_Dlg2.DoModal();
}
......
}
//以下为Dlg2.Cpp中的内容
#include "MyHeadFile.h" //如果写这一行 编译是报告类A重复定义,否则报告类A没有被定义
class CDlg1:public CDialog{
......
A m_A;
m_A.MyOpt();
......
}
请问怎样才能让两个Dlg都能够使用类A
解决方案 »
- vs2010 error C2001: 常量中有换行符
- qq? 360? 你们究竟为哪般?中国it的悲哀啊!
- CTREELISTCTRL控件的标题栏ColumnsWidth调整的消息捕获
- vc建立mfc工程,如何只有view类,没有doc类啊?
- 三维坐标系的建立,两幅图像的坐标该怎么编写程序。
- vc++如何填写WORD文档
- richedit控件的问题
- 如何使用DrawText()
- 按住某个键的时候,会发出嘟的声音,怎么去掉这种声音?
- 请教从csdn朋友中得到的找硬盘序列号方法都不很稳定,请问是什么原因?
- CTest.cpp和CTestDlg.cpp的区别
- WideCharToMultiByte问题
#pragma once
或者用下面的格式把头文件的内容包起来:#ifndef __A__
#define __A__// contents of your header file#endif /*__A__*/
#pragma once
class A{
.......
public:
MyOpt();
.......
}
//以下为Dlg1.Cpp中的内容
#include "MyHeadFile.h"
class CDlg1:public CDialog{
......
A m_A;
m_A.MyOpt();
......
MyClassOpt1(){
CDlg2 m_Dlg2;
m_Dlg2.DoModal();
}
......
}
//以下为Dlg2.Cpp中的内容
#include "MyHeadFile.h" //Error
class CDlg1:public CDialog{
......
A m_A;
m_A.MyOpt();
......
}
如果加上Error报告
DLGZFT.obj : error LNK2005: "public: __thiscall A::MyOpt(void)" (??A@@QAE@XZ) already defined in Dlg1.obj
如果不加Error行则报告
C:\Program Files\Microsoft Visual Studio\MyProjects\Car\DLG2.cpp(54) : error C2065: 'A' : undeclared identifier
.......
public:
MyOpt();
.......
};最后有个 分号 的
在类A的头文件开头加上
#pragma once
或者用下面的格式把头文件的内容包起来:#ifndef __A__
#define __A__// contents of your header file#endif /*__A__*/2.在cpp中对类A的成员函数MyOpt()作出定义
#define AFX_SHIPDLG_H__96749169_A00D_47A2_845D_1F5025B3C3E0__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ShipDlg.h : header file
//class A{
.......
public:
MyOpt();
.......
};
#endif // !defined(AFX_SHIPDLG_H__96749169_A00D_47A2_845D_1F5025B3C3E0__INCLUDED_)
2、在两个CPP文件里包含类A的H文件;
3、在两个对话框的H文件的类声明前加一句:
class a;
就行。
DLGZFT.obj : error LNK2005: "public: __thiscall A::MyOpt(void)" (??A@@QAE@XZ) already defined in Dlg1.obj
你有没有加载定义MyOpt函数的CPP文件啊另:可以尝试下clean 后 Rebuild all( 有时候有残留)