Error: The "&" operator can only be applied to a variable or other l-value.
我已經試過:
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();
Employee.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]));
是如何寫入二進制文件。
編輯: é聲明,像這樣: 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]));
編譯,但給人一種分段錯誤,我會調查原因。
編譯時,分段錯誤看起來不相關。
e聲明如何? – Kevin
「e」的聲明是什麼? –
有點相關:我建議不要根據這種結構的平臺特定打包來編寫二進制文件。 – WhozCraig