I want to know if I can split a C++ class declaration
Original class
class P
{
private:
int id;
//some really
Yes, it is possible but not in the direct kind of way. Here is what you do:
my_object.h:
struct my_object {
void fun();
my_object();
my_object(my_object const&);
~my_object();
my_object& operator = (my_object);
protected:
void pfun();
private:
struct impl;
std::unique_ptr pimpl;
};
my_object.cpp:
struct my_object::impl {
void fun() { do stuff...}
void pfun() { do other stuff... }
int private_member;
};
my_object::my_object() : pimpl(new impl) {}
my_object::my_object(my_object const& o) : pimpl(new impl(*o.pimpl) {}
my_object::~my_object() {}
my_object& my_object::operator = (my_object o) { swap(pimpl, o.pimpl); return *this; }
void my_object::fun() { pimpl->fun(); }
void my_object::pfun() { pimpl->pfun(); }
As you can see, it's a lot of work and requires the heap. Everything in balance...use when you need to.