这是代码片段,其中 "s "是一个类对象的数组。
for(int i =0; i<4; i++)
{
cout<<"Student "<<i+1<<": "<<endl;
cout<<"Enter regno: ";
cin>>regno;
cout<<"Enter name: ";
cin>>name;
cout<<"Enter cgpa: ";
cin>>cgpa;
s[i].setregno(regno);
s[i].setname(name);
s[i].setcgpa(cgpa);
size[i] = s[i].getname().size();
fout.write( (const char*) s[i].getregno(), sizeof(int));
fout.write((const char* ) s[i].getcgpa(), sizeof(float));
fout.write(reinterpret_cast<char *>(&size[i]), sizeof(int));
fout.write(s[i].getname().c_str(), size[i]);
}
在编译时,我得到以下错误信息。invalid cast from type 'float' to type 'const char*'.
如果我在write里面的类型转换后加入&,我得到了这个错误。lvalue需要作为单利的'&'操作数。
你很接近了。
保存返回值 s[i].getregno()
到一个变量。
int regno = s[i].getregno();
然后,把这个变量传给 write
:
fout.write((const char *)®no, sizeof regno);
做同样的事情 .getcgpa()
.