В .сpp надо выделить память и инициализировать.
Написала так, но ругается на эти строки:
Класс:: my_font;
Класс:: my_font.CreateFont(ар гументы);
Как правильно писать?
https://www.tutorialspoint.com/cplusplus/cpp_static_members.htm#:~:text=A%20static%20member%20function%20can%20only%20access%20static%20data%20member,this%20pointer%20of%20the%20class.
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
Приведите полный код, где эти строки написаны и объявление члена класса.
Я поняла, у меня само поле protected, а не public! Надо просто паблик static функцию для инициализации этого static поля. Спасибо!
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
ругается мб потому, что static поле работает только со static методами?
Метода не было
лан...
Корректнее, наверное, сказать наоборот)
Кто вам сказал?)
да, вот я сейчас сижу и думаю не перепутал ли я часом
Хотя нет, и так и так не то. Статик методы могут только со статик полями работать, в остальном ограничений нет, вроде
ладно, проехали, она всё равно решила задачу
ну да, из-за неподдержки this
Не решила Мой статик метод имеет declaration в cpp и после этого вызываю его. Но ошибка «explicit type is missing», хотя с сигнатурой я не ошиблась
речь, вроде, про поле изначально шла? Если вызываете через точку от имени объекта, то ошибка в этом
такое ощущение, что вы сами не знаете, что хотите сделать х)
Если я правильно понял, вам нужно что то такое (аргументы добавите сами думаю) file.hpp class CFont{}; class MyClass { public: static void create_font(); static CFont* my_font; }; file.cpp: #include "file.hpp" void MyClass::create_font() { // какие то действия my_font = new CFont(значение); } Единственное в итоге не понятно что конкретно вам нужно статическое, поле или метод в итоге. Без контекста непонятно что вам нужно.
И поле и метод для инициализации поля CFont. Вызываю этот метод в методе дочернего класса и пока не ругается. А до этого пыталась вызывать просто в cpp этот статик метод
Вызывать функции можно только из функций.
Теперь линкер ругается. Может у меня статическая переменная не инициализирована, поэтому? Как инициализировать protected: static CFont f; ? Значение присваиваю в static функции. А выделение памяти?
Покажите код, чтобы не играть в угадайку
ClassName::f; за пределами объявления класса
Получилось! Только пишу с типом впереди Спасибо большое всем
Обсуждают сегодня