加了构造函数之后编译不正确

veloting 2008-09-18 03:12:47
如能发帖,代码见后
...全文
159 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxingz 2008-09-18
  • 打赏
  • 举报
回复
什么语法哦?
veloting 2008-09-18
  • 打赏
  • 举报
回复
还是不太明白为什么,学习的太少,先揭帖吧,以后再学习学习
veloting 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 blackmurder 的回复:]
引用 22 楼 veloting 的回复:
(A){3}; 是compound literal的形式,这是个C99的语法

看来我得收回24楼的话了。能否发个链接?
[/Quote]
你网上搜搜吧,应该有的!
blackmurder 2008-09-18
  • 打赏
  • 举报
回复
我好像搞明白为什么出错了。
你的这句A dd = (A){3}; 是先调用A的default constructor来初始化dd,然后把一个临时变量赋给dd
声明构造函数前系统会自动合成default constructor,但声明后不会,因此编译出错
你可以试试再加一个default constructor,应该就能编译过了
blackmurder 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 veloting 的回复:]
(A){3}; 是compound literal的形式,这是个C99的语法
[/Quote]
看来我得收回24楼的话了。能否发个链接?
symphia 2008-09-18
  • 打赏
  • 举报
回复
某种诡异的隐式类型转换?..
blackmurder 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 veloting 的回复:]
引用 15 楼 e_sharp 的回复:
引用 14 楼 veloting 的回复:
引用 11 楼 e_sharp 的回复:
A dd = (A){3}; //{} 这是什么东东?

这个也是我想问的,呵呵


我用vs2005编译,{}这个地方通不过

我用gcc编译的,去掉了构造函数就可以编过
我想2005支持标准比gcc要弱一点
[/Quote]
问题是你的写法根本就不是标准C++,和2005没关系
太乙 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 veloting 的回复:]
(A){3}; 是compound literal的形式,这是个C99的语法
[/Quote]

学习了~~
veloting 2008-09-18
  • 打赏
  • 举报
回复
(A){3}; 是compound literal的形式,这是个C99的语法
veloting 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 beyondlwm 的回复:]
A dd = (A){3};  ##############


it doesn't make sence

try

a* dd = new a(3);


[/Quote]
yes,it's just a test
but i want to know why
veloting 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 e_sharp 的回复:]
引用 14 楼 veloting 的回复:
引用 11 楼 e_sharp 的回复:
A dd = (A){3}; //{} 这是什么东东?

这个也是我想问的,呵呵


我用vs2005编译,{}这个地方通不过
[/Quote]
我用gcc编译的,去掉了构造函数就可以编过
我想2005支持标准比gcc要弱一点
beyondlwm 2008-09-18
  • 打赏
  • 举报
回复
any more ,I don't think it's c++ grammar
beyondlwm 2008-09-18
  • 打赏
  • 举报
回复
A dd = (A){3}; ##############


it doesn't make sence

try

a* dd = new a(3);

yujimanpao 2008-09-18
  • 打赏
  • 举报
回复
struct 是结构 不存在封装等级
blackcat242 2008-09-18
  • 打赏
  • 举报
回复
lz还是打好基础吧
e_sharp 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 veloting 的回复:]
引用 11 楼 e_sharp 的回复:
A dd = (A){3}; //{} 这是什么东东?

这个也是我想问的,呵呵
[/Quote]

我用vs2005编译,{}这个地方通不过
veloting 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 e_sharp 的回复:]
A dd = (A){3}; //{} 这是什么东东?
[/Quote]
这个也是我想问的,呵呵
veloting 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 e_sharp 的回复:]
恭喜lz发贴成功
[/Quote]
谢谢,刚才的不能发,说是找不到论坛编号,5语了,赫赫
veloting 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hqin6 的回复:]
C/C++ code#include<iostream>usingnamespacestd;voidgg(char*){}structA
{public:
A(intii):i(ii){cout<<"hello"<<endl;}inti;
};voidmain(void)
{chara[10];//gg((char*){a});gg(a);

A dd(3);//A dd = (A){3};//##############cout<<dd.i<<endl;
}
[/Quote]
那为啥去掉构造函数就可以编过呢
我主要是问这个问题, A dd(3)这个我也知道是正确的
e_sharp 2008-09-18
  • 打赏
  • 举报
回复
A dd = (A){3}; //{} 这是什么东东?
加载更多回复(10)

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧