Перейти к содержанию
    

C++ разделение интерфейса и реализации. Вызвать приватный метод класса.

2 minutes ago, one_eight_seven said:

код под спойлером

код не совпадает с оригиналом,  у автора класс называется data :dirol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/1/2022 at 1:13 AM, Forger said:

код не совпадает с оригиналом,  у автора класс называется data :dirol:

Хм... Т.е. "попробовать красной ручкой"? ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, one_eight_seven said:

Это я к тому, что неужели сложно сделать себе песочницу, чтобы хеллоу ворлды там писать, а не спрашивать о них на форуме?

Тут и вроде и так понятно, что должна проходить компиляция. И без тестов. Вопрос был- может что не вижу. На ровном месте просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/1/2022 at 1:15 AM, Метценгерштейн said:

Вопрос был- может что не вижу.

А мы должны увидеть, не видя вашего кода? И, если понятно и без тестов, то почему тема так называется, и почему вы приводите именно эти элементы кода?

 

P.S. И раз уж у вас hint на initPWM2, погрепайте, посмотрите пути к инклюд-файлам, да и сами инклюд файлы. Вполне возможно, что вы собираете не то, что нам показываете

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, one_eight_seven said:

почему вы приводите именно эти элементы кода?

Подозреваю, что профиль чужой, может кто-то подарил из старших коллег. Это многое объяснило бы ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, one_eight_seven said:

А мы должны увидеть, не видя вашего кода? И, если понятно и без тестов, то почему тема так называется, и почему вы приводите именно эти элементы кода?

Тема так- взяли сомнения. Согласен, что можно было проверить. 

Элементы эти ,т.к. думал, что в них запутался

3 minutes ago, Forger said:

Подозреваю, что профиль чужой, может кто-то подарил из старших коллег. Это многое объяснило бы ))

профиль мой. Я с 2005 года здесь. На ++ недавно начал переходить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/1/2022 at 1:19 AM, Метценгерштейн said:

Элементы эти ,т.к. думал, что в них запутался

Вверху я дописал про хинт. Посмотрите, может, дело там.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, one_eight_seven said:

Вверху я дописал про хинт. Посмотрите, может, дело там.

itinPWM2- это ф-я- дублер. Она в .cpp файле этом же. Выше есть безо всяких .h и прочего новомодного. И работает. На нее и ссылается. 

Вот закомментил дублера

 

Screenshot_3.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 minutes ago, Метценгерштейн said:

На ++ недавно начал переходить.

Не вижу разницы для данной ситуации. От плюсов тут только слово class/private/public, остальное - банальная дисциплина в коде 😉

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, почему- то не могу скомпилить. А вроде да, должно работать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поскольку код не оригинальный а упрощенный, может класс, где вызывается initPWM() производный от data?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос решил.

Я вызывал не совсем так как привел в коде. Я вызывал из обычной ф-ии, не ф-ии класса этот метод из класса. Просто это ф-я была обработчиком прерывания. И из нее нельзя вызвать приватный, либо публичный метод класса.

Есть нюансы с++

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, Метценгерштейн said:

И из нее нельзя вызвать приватный, либо публичный метод класса.

Можно. "friend" тебе в помощь.

А ещё "проще"- это сделать так:

Spoiler
class IRQ
{
    protected:

        virtual void IRQ_Handler( void ) = 0;
...

 

И потом использовать так:

Spoiler
class PLC_Timer : protected IRQ
{
	protected:

        virtual void IRQ_Handler( void );
    ...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Метценгерштейн said:

И из нее нельзя вызвать приватный, либо публичный метод класса.

Публичный можно, через экземпляр класса.

Приватный на то  и приватный, чтобы кто попало не лазил внутрь класса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, Метценгерштейн said:

Я вызывал не совсем так как привел в коде. Я вызывал из обычной ф-ии, не ф-ии класса этот метод из класса.

Петрович, я слышал ты 100р в лотерею выиграл?

Ну почти. Во первых не в лотерею, а в покер, по вторых не 100 а 1000, а в третьих не выиграл, а проиграл.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...