Может кто-нибудь, пожалуйста, дайте мне пример того, как работают публичные и частные заголовки? Я читал в сети, но я не могу найти много полезной информации с примерами кодов. Мне сообщили, что я должен использовать частные заголовки для разделения публичной и частной частей моего кода для создания статической библиотеки. После некоторого чтения у меня есть общее представление о том, как это работает, но по-настоящему оценит хороший пример, чтобы начать меня. В частности, я не совсем понимаю, как поместить функции интерфейса в мой общий заголовок и частные переменные/функции в моем закрытом заголовке? Благодаря!Пример частного/публичного заголовка?
EDIT:
Может быть, я не формулировка мой вопрос правильно, но то, что я имел в виду есть, например, у меня есть myMath.h и myMath.cpp и myMath.h имеет:
class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
private:
double a;
double b;
};
И myMath.cpp имеет реализации функций. Как я могу сделать так, чтобы myMath.h имел только три публичные функции, а частные переменные были определены в другом файле (например, myMath_i.h), и эти три файла были такими, что после создания статической библиотеки, Пользователям требуется только myMath.h. Это также означает, что myMath.h не может # включить myMath_i.h. Так что-то вроде:
myMath.h:
class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
}
и myMath_i.h:
class myMath{
private:
double a;
double b;
}
Конечно, это не представляется возможным, потому что тогда я буду переопределение класса MyMath ...
Это не только предоставление публичных и закрытых заголовков, но и отображение идиомы pImpl - для этого необходимо публичное/частное, но pImpl не требуется. –
@AndrewAylett, Как бы вы сделали это без pimpl? –
@ LyndenShields, я имел в виду, что у вас могут быть публичные и закрытые заголовки по причинам, отличным от pimpl, поэтому демонстрация pimpl демонстрирует конкретное использование для публичных/закрытых заголовков, а не для общей идеи. –