免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12537 | 回复: 3
打印 上一主题 下一主题

list容器能存放结构体对象吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-09 15:35 |只看该作者 |倒序浏览
我写了一个简单的程序来测试,结果出现了,错误,请各位大侠指点。
错误信息时说我没有实现拷贝构造函数。
不知道结构体是不是也需要些拷贝构造函数,该怎么写?
#include <iostream>
#include <list>
using namespace std;
struct Node
{
        int a;
        char b;
};
int main(){
list<Node> node;
list<Node>::iterator pN;

        Node node1={24,'a'};
        Node node2={24,'b'};
        Node node3={24,'c'};
        node.push_back(node1);
        node.push_back(node2);
        node.push_back(node3);
        while(p=node.begin()&&p!=node.end())
       {
                //cout<< *p->b <<endl;
        }
return 0;
}

论坛徽章:
0
2 [报告]
发表于 2007-04-09 15:45 |只看该作者
for(p=node.begin(); p!=node.end(); p++)
{
        cout<< p->b << endl;
}

另外,结构体也是类,struct与class的区别仅在于其成员默认是public,而class是private
如果仅是遍历容器成员不修改的话,用const迭代器好,养成好的习惯
你的程序中没必要定义三个Node变量,定义一个,然后重复使用,或者干脆不定义,直接在push时创建

关于程序有错时,自己试着分析揭示的错误&&查帮助,特别是这儿明显的语法错误

论坛徽章:
0
3 [报告]
发表于 2007-04-09 15:52 |只看该作者
对了,补充一点,结构体的显式初始化(就是你用的那种方法)虽然可以使用,这是C++为了兼容C,所以允许。其使用前提是struct没有定义构造函数且全体数据成员是public成员。
建议还是定义构造函数,按照类的方法来使用

论坛徽章:
0
4 [报告]
发表于 2007-04-09 17:52 |只看该作者
>>cout<< *p->b <<endl;

cout<< (*p).b <<endl;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP