这是编译器的有关问题吗?报了一个奇怪的异常
这是编译器的问题吗?报了一个奇怪的错误
1>g:\网络编程大作业\secondtest\secondtest\ChatDlg.h(30): error C2143: 语法错误 : 缺少“;”(在“*”的前面)
1>g:\网络编程大作业\secondtest\secondtest\ChatDlg.h(30): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
#pragma once
#include"Information.cpp"
#include "FriendList.h"
// CChatDlg 对话框
class CChatDlg : public CDialogEx
{
DECLARE_DYNAMIC(CChatDlg)
public:
CChatDlg(CWnd* pParent = NULL); // 标准构造函数
CChatDlg(HANDLE *handle ,char *nickName ,CWnd* pParent = NULL);
virtual ~CChatDlg();
// 对话框数据
enum { IDD = IDD_DIALOG2 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnEnChangeEdit3();
afx_msg void OnBnClickedButton1();
CString EditRecv;
CString EditSend;
char nickName[30];
HANDLE *handle;
CFriendListDlg * pParent;//这里有问题
//------------------------------------------------
virtual BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
afx_msg void OnBnClickedCancel();
virtual BOOL OnInitDialog();
};
------解决方案--------------------
头文件不能互相包含
------解决方案--------------------
#pragma once是防止重复包含同一个头文件
------解决方案--------------------
实际上是谁先声明的问题, 如果ChatDlg.h先包含了FriendList.h,则FriendList.h中无法使用CChatDlg类,因为在#include<FriendList.h>时, CChatDlg还没有声明。 反之亦然。
所以一般要避免头文件互相包含(虽然互相包含本身并没有问题,#pragma once 或 #ifdef #define #endif 守护代码都可以避免报错)。
将 #include "FriendList.h" 一行替换成 class CFriendListDlg; 就可以了
1>g:\网络编程大作业\secondtest\secondtest\ChatDlg.h(30): error C2143: 语法错误 : 缺少“;”(在“*”的前面)
1>g:\网络编程大作业\secondtest\secondtest\ChatDlg.h(30): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
#pragma once
#include"Information.cpp"
#include "FriendList.h"
// CChatDlg 对话框
class CChatDlg : public CDialogEx
{
DECLARE_DYNAMIC(CChatDlg)
public:
CChatDlg(CWnd* pParent = NULL); // 标准构造函数
CChatDlg(HANDLE *handle ,char *nickName ,CWnd* pParent = NULL);
virtual ~CChatDlg();
// 对话框数据
enum { IDD = IDD_DIALOG2 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnEnChangeEdit3();
afx_msg void OnBnClickedButton1();
CString EditRecv;
CString EditSend;
char nickName[30];
HANDLE *handle;
CFriendListDlg * pParent;//这里有问题
//------------------------------------------------
virtual BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
afx_msg void OnBnClickedCancel();
virtual BOOL OnInitDialog();
};
------解决方案--------------------
头文件不能互相包含
------解决方案--------------------
#pragma once是防止重复包含同一个头文件
------解决方案--------------------
实际上是谁先声明的问题, 如果ChatDlg.h先包含了FriendList.h,则FriendList.h中无法使用CChatDlg类,因为在#include<FriendList.h>时, CChatDlg还没有声明。 反之亦然。
所以一般要避免头文件互相包含(虽然互相包含本身并没有问题,#pragma once 或 #ifdef #define #endif 守护代码都可以避免报错)。
将 #include "FriendList.h" 一行替换成 class CFriendListDlg; 就可以了