Почему бы не выбрать этот дизайн:
// A.hpp
class A
{
public:
void do_something();
};
// A.cpp
#include "A.hpp"
#include <vector>
std::vector<int> impl_database_for_do_something;
static void impl_helper_for_do_something(const std::vector<int>& database){}
void A::do_something(){ impl_helper_for_do_something(impl_database_for_do_something); }
Вместо этого:
// A.hpp
#include <vector>
class A
{
public:
void do_something();
private:
std::vector<int> database_for_do_something_;
void helper_for_do_something(const std::vector<int>& database){}
};
Могу ли я скрыть детали реализации и ускоренную компиляцию с переменными и статическими функциями, определенными в исходном файле? Если нет, что не так с этим дизайном (кроме наследования)?