Jump to content
    

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

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

void initPWM();

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

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

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

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

Share this post


Link to post
Share on other sites

.h

class data
{
public:
    void start();

private:
    void initPWM();
};

data.cpp

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

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

	initPWM();
}

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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()

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...