| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:这个小程序在VC++6.0中不能通过,在其它DEV-C++通过,请问原因在哪里
只看楼主 加入收藏
sheng124
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-29
结帖率:100%
收藏
 问题点数:0 回复次数:2 
这个小程序在VC++6.0中不能通过,在其它DEV-C++通过,请问原因在哪里
#include <iostream>
#include <string>
using namespace std;//头文件
//以下为结构体
struct student
{
    int num;
    string name;
    float score[3];
}stu;

int main()
{
    student stu={1234,"lili",78.5,34,445};
    int a;
    void print(student &);
    print(stu);
    cin>>a;
    return 0;
}
void print(student &stud)
{
    cout<<stud.num<<" "<<stud.name<<" "<<stud.score[0]<<" "<<stud.score[1]<<" "<<stud.score[2]<<endl;
}


在VC中提示student stu={1234,"lili",78.5,34,445};
不对。
搜索更多相关主题的帖子: void include return 结构体 
2010-08-04 15:34
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
首先student stu={1234,"lili",78.5,34,445};这种形式的初始化是在没有构造函数的情况下才合法。如果我们没有提供初始化函数,且在一个类的数据成员里包含类类型的成员(string name),编译器会隐式的提供一个合成默认构造函数。所以你这样写的是不合法的。我试了下把成员string name 改成 char *name,在VC6里是能通过编译的。
上面的内容你当参考,不同的编译器是会有区别,建议你看下《C++程序设计语言》的第三版里类的部分。


[ 本帖最后由 lintaoyn 于 2010-8-4 18:45 编辑 ]

迭代的是人,递归的是神。
2010-08-04 18:44
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
原因就是 vc6.0 不行。楼主可以去看置顶的帖子。
2010-08-05 00:12
快速回复:这个小程序在VC++6.0中不能通过,在其它DEV-C++通过,请问原因在哪里
数据加载中...
 
   



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

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