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