| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1266 人关注过本帖
标题:新手请教一个简单问题
只看楼主 加入收藏
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
头文件
不要有定义
楼主闲麻烦可以再用个文件(不是头文件)
把他包进去
或者做个函数
头文件都要有函数来做
syntax error : '{'
unexpected token(s) preceding '{'; skipping apparent function body
我想他大概意思是没有找到你函数

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-14 12:16
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

发个源码过来看看吧,有可能是在作用域外调用了不该调用的东西吧


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-14 13:14
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 
受到大家的提点,我在头文件的其他的地方试了试是可以的,但在类里面定义成员变量想进行初始化才遇到了这个问题(前面提到的问题就是这个问题),部分代码如下,是不是在定义部分不能初始化,要初始化只能在构造函数里面啊?要是真的那样,这里好像是用的是父类的构造函数,我怎么做出自己的构造函数啊?还望各位赐教,刚学没多久,各位见笑了!!!!
[CODE]

class CAaDlg : public CDialog
{
// Construction
public:
int aa[3][4]={{1,2,3,4},{1,2},{5,4,3,2}};
CAaDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CAaDlg)
enum { IDD = IDD_AA_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAaDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CAaDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

[/CODE]
2006-05-14 18:33
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
以下是引用mahou在2006-5-14 18:33:00的发言:
受到大家的提点,我在头文件的其他的地方试了试是可以的,但在类里面定义成员变量想进行初始化才遇到了这个问题(前面提到的问题就是这个问题),部分代码如下,是不是在定义部分不能初始化,要初始化只能在构造函数里面啊?要是真的那样,这里好像是用的是父类的构造函数,我怎么做出自己的构造函数啊?还望各位赐教,刚学没多久,各位见笑了!!!!
[CODE]

class CAaDlg : public CDialog
{
// Construction
public:
int aa[3][4]; //如果是想让他为公有成员就放这声明。
//你在定义这个构造函数的时候
//把aa[3][4]={{1,2,3,4},{1,2},{5,4,3,2}};加进去就可以了。
CAaDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CAaDlg)
enum { IDD = IDD_AA_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAaDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CAaDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

[/CODE]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-14 20:29
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 
按照楼上的大侠说的,还是报错啊,而且提示在构造函数那行出错!!!
[CODE]

//这是类定义
class CAaDlg : public CDialog
{
// Construction
public:
int aa[3][4];
CAaDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CAaDlg)
enum { IDD = IDD_AA_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAaDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CAaDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//这是构造函数
CAaDlg::CAaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAaDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAaDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
aa[3][4]={{1,2,3,4},{1,2},{5,4,3,2}};
}

[/CODE]
2006-05-14 22:28
huanguyu
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-4-26
收藏
得分:0 
构造函数不是只能用来初始化私有数据的吗

看越多书就发现自己越无知 于是就越想知道更多
2006-05-15 11:20
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
这我也不太清楚

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-15 15:20
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我想应该是16楼说的那样,所以可以建议用静态成员变量,或者直接就在类的最上面初试化不就够了吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-15 15:22
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 


类定义部分成员不能分配空间初始化的
需要函数来做
或者可以有默认参数
例如fn(char *p="noname")
{
strcpy( ,p);
}




嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-15 18:07
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 
我试验过了,不管我把数组声明为公有的、私有的还是保护类型的,编译的时候一样报错,
至于18楼提出的在类上面初始化,这样未尝不是一个办法,这应该是定义成了一个全局变量了吧,但好像这样破坏了类的封装性吧,有没有什么办法把它封装在类里面,又能让编译通过呢?
19楼提出的“需要函数来做”,那么在构造函数里面做行吗?还是一定要其他什么函数呢?
顺便说一下,我是新手上路,好像还没有权限上传附件,要不然传上来,让大家来研究研究!!!
2006-05-16 01:16
快速回复:新手请教一个简单问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015820 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved