| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1266 人关注过本帖
标题:新手请教一个简单问题
取消只看楼主 加入收藏
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
 问题点数:0 回复次数:7 
新手请教一个简单问题
我在VC++开发系统里面
在头文件里面定义一个二维数组,想把他初始化
如:
int aa[3][4]={{1,2,3,4},{1,2},{5,4,3,2}};
在编译的时候编译系统却报错!!!
怎么回事呢?!!!
搜索更多相关主题的帖子: 简单问题 定义 int 
2006-05-12 15:50
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 

我也认为不应该报错啊
但系统就是提示错误

系统提示错误如下:
syntax error : '{'
unexpected token(s) preceding '{'; skipping apparent function body

怎么回事呢?
还请高手赐教!!!

2006-05-13 15:07
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 

如果我在头文件里,只是定义,而不进行初始化,就没有问题

如 int aa[3][4];

编译能正常通过

但这样我就必须在.cpp文件里面对数组各个元素进行赋值初始化,这样也未免太麻烦了吧,要是遇到一个如20×20大数组,做这样的赋值初始化都会累掉半条命啊!!!

还望各位xdjm赐教!!!

2006-05-13 15:18
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 

我想至于9楼提出的可能是“其他地方的大括号出现问题”,我想其他地方的大括号应该没有问题,因为正如我在5楼说的那样,只是定义而不做初始化,编译能正常通过,我想这足以证明其他地方的大括号没有问题拉!!

2006-05-14 00:56
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
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
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 
我试验过了,不管我把数组声明为公有的、私有的还是保护类型的,编译的时候一样报错,
至于18楼提出的在类上面初始化,这样未尝不是一个办法,这应该是定义成了一个全局变量了吧,但好像这样破坏了类的封装性吧,有没有什么办法把它封装在类里面,又能让编译通过呢?
19楼提出的“需要函数来做”,那么在构造函数里面做行吗?还是一定要其他什么函数呢?
顺便说一下,我是新手上路,好像还没有权限上传附件,要不然传上来,让大家来研究研究!!!
2006-05-16 01:16
mahou
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-12
收藏
得分:0 

受教了!!!
谢谢版主!!

2006-05-17 14:21
快速回复:新手请教一个简单问题
数据加载中...
 
   



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

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