Вот суть того, что я пытаюсь сделать.
У меня есть достаточно сложная программа, и я хочу организовать ее в набор заголовочных файлов
Программа должна хранить большой объект класса в памяти, доступный для всех функций
Таким образом, определение класса находится в своем собственном заголовочном файле (поскольку другиезаголовочные файлы используют его независимо друг от друга)
Включите установленные мной средства защиты, похоже, работает, поэтому класс определяется только один раз для всего файла
Данные самого класса имеют неизвестный размер во время компиляции.Я читаю содержимое файлов данных в структуру, и файл выбирается пользователем во время выполнения
Итак, я сначала инициализирую объект класса как пустой, в главномсфера моей программы.Затем я хочу передать указатель на этот вновь созданный экземпляр класса в функцию, которая читает данные файла.
Функция чтения файла должна выделять достаточно памяти для хранения всех данных вфайл, а затем записать в память, указанную указателем класса.
Я хочу, чтобы набор данных сохранялся в основной области, а не передавался по значению.
Возможно, этот фиктивный код лучше иллюстрирует то, что я хочу сделать.
#include <class_def.h>
#include <readfile.h>
#include <otherfunctions.h> // Will perform a calculation based on class data in memory
myclass data;
int main()
{
read_to_memory(&data);
some_other_function(&data);
}
--------------------
int read_to_memory(myclass* data_pt) // Function from readfile.h
{
// Get filename from user input
// Determine filesize, from which the size of class members is derived
// Then initialize class object referred to by data_pt
*data_pt = myclass.myclass(size);
// Then, start writing to memory with file data
// Is actually a big "for" loop
(*data_pt).member1[0] = <value read from file>;
(*data_pt).member2[0] = <value read from file>;
...
(*data_pt).member1[N] = <value read from file>;
(*data_pt).member2[N] = <value read from file>;
}
Прямо сейчас я сталкиваюсь с ошибками сегмента, когда пытаюсь получить доступ к членам класса изфункция read_into_memory.Это делается при попытке чтения
cout << (*data_pt).member1[0])
или записи
(*data_pt).member1[0] = <value read from file>;
.Тем не менее, сбой происходит после строки: "* data_pt = myclass.myclass (size);", которая подсказывает мне, что конструктор класса работает ...
Любые идеи, что я могу делать неправильно?Заранее спасибо!