问题:
错误:“&”运算符只能应用于变量或其他左值。
我试过的:
dynamic_cast<char*>(e)
reinterpret_cast<char*>(e)
static_cast<char*>(e)
(char*) e
我正在尝试做的事情:
- 将数组 e.data(私有)写入二进制文件。
笔记:
- e.getSize() 返回数组中的元素个数
- e[] 返回 Employee 对象。
代码:
fstream fout;
fout.open(filename.c_str(), ios::out|ios::binary);
if(fout.good())
{
for(int i=0;i<e.getSize();i++)
{
fout.write((char*)&e[i], sizeof(e[i]));
}
}
fout.close();
员工.h
class Employee {
friend std::ostream& operator<<(std::ostream&, const Employee &);
private:
int id;
char name[50];
char address[100];
char phone[20];
char department[100];
int salary;
public:
Employee();
~Employee();
Employee(int,char[],char[],char[],char[],int);
bool operator==(Employee&);
};
我不知道该怎么做,我记得fout.write((char*)&e[i], sizeof(e[i]));
是如何写入二进制文件。
编辑:
e 声明如下:
MYLIB::Bucket<Employee> e;
template <class T>
class Bucket {
private:
T* bkt;
int size;
int capacity;
static const int stepsize = 10;
public:
Bucket();
~Bucket();
void push_back(const T&);
T operator[](int);
int getSize();
int getCapacity();
};
编辑 2:
fout.write(reinterpret_cast<char*>(e[i]), sizeof(e[i]));
给我第 122 行:错误:使用 reinterpret_cast 来转换?不允许使用 char*。(第 122 行是刚刚引用的行)
编辑3:
tempemp = e[i];
fout.write((char*)(&tempemp), sizeof(e[i]));
编译但出现分段错误,我将调查原因。
编译,分段错误看起来无关。