だから私は巨大な(レガシー)ファイルを持っています、それをHUGE.cxxと呼びます。新しい機能を追加していますが、ファイルがさらに大きくなっています。ジョブごとに異なるクラスを作成しようとしましたが、一部のタスクではプライベート変数にアクセスする必要があります。これが何が起こっているかの大まかなドラフトです
//HUGE.h
class Huge{
NewFeature object;
//...more stuff
};
//HUGE.cxx
Huge::Huge(){
//imagine object keeps track of id->func callback
object.on('uniqueID1', boost::bind(&HUGE::onID1Clicked,this));
}
void Huge::onID1Clicked()const{ return satisfiesSomeCondition(); }
//called internally when user right clicks
void Huge::createPopup()const{
for itr = object.begin to end
callback = itr->second;
//if satisfies condition add to popupmenu
if(callback()) addToPopupMenu( itr->first );
}
//event handler
void Huge::event(id){
//oh uniqueID1 was clicked as a menu item in right click
case 'uniqueID1': doSpecificFunctionality(); break;
}
ご覧のとおり、依存関係がいくつかありますが、ファイルが非常に大きいため、変更もあります。さらにファイルに分割することについて何かアドバイスはありますか?フレンド宣言をHugeファイルに追加して別のクラスを追加できることは知っていますが、可能であればそのオプションを避けたいと思いました。