\t\t同一个程序,在VC6有错误和VS2005没有问题

来源:互联网 发布:数据库工资管理系统 编辑:程序博客网 时间:2024/05/16 15:58

今天在学习C++的时候,遇到一个问题。同一个程序,在VC6.0中会报错,而在VS2005中就没有问题,哎……下面把这个程序粘出来。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

struct Pairs
{
string name;
int val;

};

vector<Pairs> pairs;

int& value(const string& s)
{
for (int i=0;i<pairs.size();i++)
{
   if (s==pairs[i].name)
   {
    return pairs[i].val;
   }
}
//初始化的问题 VC6.0报错 error C2552: 'p' : non-aggregates cannot be initialized with initializer list
Pairs p={s,0};   
pairs.push_back(p);
return pairs[pairs.size()-1].val;
}

int main()
{

string buf;
while (cin>>buf)value(buf)++;
for (vector<Pairs>::const_iterator p=pairs.begin();p!=pairs.end();++p)
   cout<<p->name<<":"<<p->val<<endl;
return 0;
}

意思就是说,结构体初始化后不能再用{***,***}赋值,只能一个一个成员赋值,或者用自己写的函数赋值。

但是这段程序用VS2005编译就没有问题,顺利执行。

0 0
原创粉丝点击