Как инициализировать статическое поле? Добрый день.
Имеется класс agents, в нем есть статическое поле
static graph general_graph;
Где graph - другой класс. У этого класса есть метод fill() - считывает граф из файла.
Проблема: не могу инициализировать статическую переменную объектом граф с уже выполненным методом fill(), не создавая глобальный объект.
вне функции main пишу такой код:
graph agents::general_graph = *(new graph());
код компилируется без ошибок, но как при этом вызвать метод fill() при инициализации?

21 Авг 2019 в 07:06
177 +1
0
Ответы
1

В данном случае вы можете использовать конструктор по умолчанию для инициализации статического поля и вызова метода fill() внутри этого конструктора. Вот пример:

class agents {
public:
static graph general_graph;
agents() {
general_graph.fill();
}
};
graph agents::general_graph;
int main() {
agents agent;
// Теперь general_graph заполнен данными из файла
return 0;
}

В этом примере при создании объекта agents происходит инициализация статического поля general_graph, который вызывает метод fill() для заполнения данных из файла. Таким образом, вы можете использовать этот подход, чтобы инициализировать статическое поле объектом с выполненным методом fill().

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир