VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 314|回复: 6

第27课 new结构体类型出错了

[复制链接]
69_avatar_middle
online_member awfymwvf 发表于 2018-4-20 11:58:29 | 显示全部楼层 |阅读模式
代码如下:

  1. // HelloWorld.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <string>
  6. using namespace std;

  7. struct ShangPin   
  8. {
  9.         int bianhao;
  10.         string name;
  11.         int money;
  12.         string leibie;
  13.         int stime;
  14. };

  15. void swap(int& x, int& y)
  16. {
  17.         int t = x;
  18.         x = y;
  19.         y = t;
  20. }

  21. int _tmain(int argc, _TCHAR* argv[])
  22. {
  23.         int* p = new int(8);
  24.         float* p1 = new float(6.8);
  25.         ShangPin* pshangpin = new ShangPin{ 1001, "商用电脑", 5888, "电子产品", 20180328 };

  26.         int a = 6, b = 8;
  27.         swap(a , b);
  28.         cout << "a = " << a << " b = " << b << endl;
  29.         return 0;
  30. }
复制代码
出现下面的错误提示:

1>d:\visual studio 2010\projects\27\helloworld\helloworld.cpp(29): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>d:\visual studio 2010\projects\27\helloworld\helloworld.cpp(29): error C2143: 语法错误 : 缺少“;”(在“}”的前面)

大神帮看一下哪里的问题,万分感谢。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

81_avatar_middle
online_moderator Debug 发表于 2018-4-20 12:06:03 | 显示全部楼层
这种写法是 C++ 11 支持的新语法,我在 VS2013 中编译没有问题,截图如下:
第27课 new结构体类型出错了

VS2010 不支持这种初始化写法,所以就直接报错了!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-20 12:06:58 | 显示全部楼层
Debug 发表于 2018-4-20 12:06
这种写法是 C++ 11 支持的新语法,我在 VS2013 中编译没有问题,截图如下:

速度比我还快,说的有道理!第27课 new结构体类型出错了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-20 12:11:42 | 显示全部楼层
原来是VS2010不支持这么写啊,谢谢楼上的兄弟们解答,万分感谢,难道我要换VS2013?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-20 12:12:29 | 显示全部楼层
那在VS2010中要怎么写呢?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-20 13:21:17 | 显示全部楼层
awfymwvf 发表于 2018-4-20 12:12
那在VS2010中要怎么写呢?

在 VS2010 中的改法也不难,将:
ShangPin* pshangpin = new ShangPin{ 1001, "商用电脑", 5888, "电子产品", 20180328 };
改成:
ShangPin* pshangpin = new ShangPin( 1001, "商用电脑", 5888, "电子产品", 20180328 );
之后,在 结构体 ShangPin 中加上带参数的构造函数就可以了,如下:
  1. struct ShangPin
  2. {
  3.         int bianhao;
  4.         string name;
  5.         int money;
  6.         string leibie;
  7.         int stime;

  8.         ShangPin(int t_bianhao, string t_name, int t_money, string t_leibie, int t_stime)
  9.         {
  10.                 bianhao = t_bianhao;
  11.                 name = t_name;
  12.                 money = t_money;
  13.                 leibie = t_leibie;
  14.                 stime = t_stime;
  15.         }
  16. };
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
ico_lz  楼主| awfymwvf 发表于 2018-4-20 14:52:28 | 显示全部楼层
谢谢SYC大神,辛苦了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-5-21 15:23

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表