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

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

Есть data.h файл, где есть приватный метод- его прототип.
 

void initPWM();

Есть data.cpp класс, где реализация этого метода произведена

void data::initPWM()
{
...
...
}

Есть и публичные методы. Где-то в коде я создаю объект этого класса и вызываю его публичный метод.

И как мне из этого публичного метода вызвать мой приватный метод initPWM() ?

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


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

3 minutes ago, Arlleex said:

Вот прямо и вызывать, какие проблемы?

так не хочет

 

Screenshot_2.jpg

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


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

.h

class data
{
public:
    void start();

private:
    void initPWM();
};

data.cpp

void data::initPWM()
{
...
...
}

void data::start()
{
..
..

	initPWM();
}

start вызываю из вне- все там работает

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


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

я исправил. Реальный код я не выложил сюда. Заменил название.

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


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

2 minutes ago, Arlleex said:

В приведенном куске нет криминала.

вот и я не понимаю.

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


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

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

вот и я не понимаю.

Ну вот и разбирайтесь, конкретно в приведенном куске ошибки нет (на всякий случай лично убедился в арм компиляторе)

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


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

это ф-я дублер. Она просто сверху объявлена. И она вызывается. Без всякого объявления в .h

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


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

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

Spoiler
$ cat test.h 
#pragma once

class test {
    public:
        void start();
    private:
        void priv();
};
$ cat test.cpp 
#include "test.h"
#include <iostream>

void test::start() {
    std::cout << "start()" << std::endl;
    priv();
}

void test::priv() {
    std::cout << "priv()" << std::endl;
}
$ cat main.cpp 
#include "test.h"

int main() {
    test t;
    t.start();
    return 0;
}

 

 

компиляция и запуск:

$ g++ test.cpp main.cpp 
$ ./a.out 
start()
priv()

 

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

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


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

Только что, one_eight_seven сказал:

компиляция и запуск:

$ g++ test.cpp main.cpp 
$ ./a.out 
start()
priv()

Были сомнения?:wink:

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


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

On 11/1/2022 at 1:11 AM, Arlleex said:

Были сомнения?:wink:

Нет. Видимо, вы ответили до того, как мои сообщения слились. Там в конце приписка.

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


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

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

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

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

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

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

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

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

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

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