严格遵循C++语法,却仍然报错
我在视图类的头文件类的成员中加入内嵌另一个类的一个对象CWave m_wave.这个CWave类是在另一个文件中定义过的,可以编译器报错,说d:\program files\microsoft visual studio\myprojects\wave\waveview.h(16) : error C2146: syntax error : missing ';' before identifier 'm_wave'
怎么回事呢?
#include "Wave.h"
class CWaveView : public CView
{
private:
CWave m_wave;
protected: // create from serialization only
CWaveView();
DECLARE_DYNCREATE(CWaveView)
// Attributes
public:
CWaveDoc* GetDocument();
.....
class CWave
{
public:
CWave();
CWave( const char * );
CWave( const char *, HINSTANCE );
CWave( int, HINSTANCE );
~CWave();
int DeviceC
问题点数:10、回复次数:6Top
1 楼waitlife()回复于 2006-03-18 11:07:25 得分 0
你定义'm_wave'对象时可能忘记加';'了,声明对象出错Top
2 楼lizhanqing123(晴晴)回复于 2006-03-18 11:23:11 得分 0
;号我当然加了,我给出的代码不是写出来了吗?是我从程序中复制出来的。Top
3 楼huguyue6670(美丽海洋)回复于 2006-03-18 11:36:39 得分 0
你的错误下一个应该是c2051吗?你把所加的头文件位置换一下,别再“StdAfx.h”的上边,要是实在不行的话,我劝楼主重新做一次就行了。我遇到的这个问题就是这么解决的。Top
4 楼Mackz(在相互)回复于 2006-03-18 13:32:27 得分 0
可不要说“严格遵循C++语法”
在使用类之前,要先声明,而且不能循环包含,因此是这样声明的:
//#include "Wave.h" 不要循环包含
class CWave;
class CWaveView : public CView
{
private:
CWave m_wave;
protected: // create from serialization only
CWaveView();
Top
5 楼Atomictry(天影)回复于 2006-03-18 13:46:49 得分 0
你确定你的Wave.h文件和WaveView.h放在同一个目录下?Top
6 楼jiaobo19830121(傻蛋)回复于 2006-03-18 14:26:43 得分 0
你在定义一个类的时候最好加入
#if !defined(AFX_GIDVIEW_H__54AE0900_558A_4841_BB9F_3E03222D6CAF__INCLUDED_)
#define AFX_GIDVIEW_H__54AE0900_558A_4841_BB9F_3E03222D6CAF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
这样的宏定义语句 防止在调用的时候多次定义Top




