разница в при записи и чтения из файла
имеется класс без POD
void write_in_file() {
MyClassOne** arr = new MyClassOne * [10];
for (int i = 0; i < 10; i++) {
arr[i] = new MyClassOne((i+2)*3,((3*i-(i*2))+21),i%2==0?false : true);
}
ofstream fout;
fout.open("someFile.txt");
if (fout.is_open()) {
for (int i = 0; i < 10; i++) {
fout.write((char*)&(*arr[i]), sizeof(MyClassOne));
}
}
fout.close();
}
void read_file() {
MyClassOne mco;
ifstream fin;
fin.open("someFile.txt");
if (fin.is_open()) {
while (fin.read((char*)&mco, sizeof(MyClassOne))) {
mco.print();
}
}
fin.close();
}
void main() {
write_in_file();
read_file();
}
После полной записи массива, делаю чтения из файла, то почему то выводятся первых 5 элементов с правильными значениями, а остальные 5 не выводятся. Долго копался, переделывал цикл для инициализации новыми значениямм и обнаружил что если заменить плюс на минус: Было
arr[i] = new MyClass(i, ((3 * i - (i * 2)) + 21), i%2==0?true:false);
стало
arr[i] = new MyClass(i, ((3 * i - (i * 2)) - 21), i%2==0?true:false);
массив после перезаписи и чтения, данные выводится правильно и в полном количестве подскажите почему так происходит, ведь объекты класса содержал корректные данные. то есть проблема вся именно в замене + 21 на - 21.