首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这是编译器的有关问题吗?报了一个奇怪的异常

2013-12-16 
这是编译器的问题吗?报了一个奇怪的错误1g:\网络编程大作业\secondtest\secondtest\ChatDlg.h(30): error

这是编译器的问题吗?报了一个奇怪的错误

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();
};
[解决办法]
头文件不能互相包含
[解决办法]

引用:
Quote: 引用:

头文件不能互相包含

似乎是重复包含的问题
但是已经有#pragma once   为什么还会出现这个情况

#pragma once是防止重复包含同一个头文件
[解决办法]
实际上是谁先声明的问题, 如果ChatDlg.h先包含了FriendList.h,则FriendList.h中无法使用CChatDlg类,因为在#include<FriendList.h>时, CChatDlg还没有声明。 反之亦然。

所以一般要避免头文件互相包含(虽然互相包含本身并没有问题,#pragma once 或 #ifdef #define #endif 守护代码都可以避免报错)。

将 #include "FriendList.h" 一行替换成 class CFriendListDlg; 就可以了

热点排行