gpt4 book ai didi

c++ - 文件越来越大,需要将数据分离到另一个文件中,但也需要使用私有(private)变量。我怎样才能正确地做到这一点?

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:00 26 4
gpt4 key购买 nike

所以我有一个巨大的(遗留)文件,称之为 HUGE.cxx。我正在添加新功能,但文件越来越大。我尝试为不同的工作创建不同的类,但对于某些任务我需要访问私有(private)变量。这是正在发生的事情的粗略草稿

//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 文件添加友元声明并添加另一个类,但我想尽可能避免该选项。

最佳答案

听起来您实际上需要进行重大重构,将关注点分离到适当的位置。

但是,为了解决您眼前的问题,没有特别的理由说明为什么所有 Huge 都需要在 Huge.cxx 中定义。您可以将函数定义拆分到单独的文件中,只要每个函数都在某处定义。

你可能会得到:

  • Huge.h
  • Huge-private.cxx
  • Huge-public.cxx

或者无论如何拆分您的代码是有意义的。

关于c++ - 文件越来越大,需要将数据分离到另一个文件中,但也需要使用私有(private)变量。我怎样才能正确地做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15007659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com