不确定如何将不同类别的功能拆分为不同的文件 |C++



我已经编写这个应用程序一段时间了,并且有很多函数,我一直试图避免在一个代码块中聚集在一起。

我对C++相对较新,我想我了解头文件以及如何正确使用它们。但是我遇到了一个稍微复杂的问题,涉及私有类。每当我尝试将这些功能放在不同的文件中并为它们制作标题时,我都会收到很多错误。我想将 wxFrame 类保留在 main.cpp 文件中,但我还需要在文件外部定义其中的函数。我真的可以使用一些帮助。

主.cpp


class MyFrame : public wxFrame{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);


private:
void Carfunc();
void Busfunc1(); 
void Busfunc2(); 
void Busfunc3(); 

总线功能.cpp

void MyFrame::Busfunc1(){
// do stuff here
}
void MyFrame::Busfunc2(){
// do stuff here
}
void MyFrame::Busfunc3(){
// do stuff here
}

汽车功能.cpp

void MyFrame::Carfunc(){
// do stuff here
}

有很多方法可以做到这一点。 一种是在总线和汽车类中定义这些方法(函数)。

例如,MyFrame中的Busfunc1()可以做return bus.func1()
Busfunc2()MyFrame可以做return bus.func2()
Carfunc()MyFrame可以做return car.func()
等等...
或者你可以简单地在MyFrame上公开汽车和公共汽车。 这样MyFrame就有了一辆车,而那辆车有Carfunc()代替。 MyFrame也有一辆公共汽车, 并且该总线具有所有总线功能而不是MyFrame。

至少有 4-5 种其他方法可以做到这一点,包括静态方法、继承......它们最终都会在不同的文件中组织您的代码。这完全取决于您要实现的目标。真正的要求是什么?当然,一般来说,组织代码总是好的,但什么是 Busfunc2?卡芬克到底是什么?

不要将类声明放在main.cpp
当你这样做时CarFunctions.cpp不知道类MyFrame存在(BusFunctions.cpp 也是如此),编译器会抱怨!

相反,我建议坚持共同约定,并且:

  1. 为类MyFrame的声明创建一个名为MyFrame.hpp的头文件。

  2. 创建一个MyFrame.cpp源文件,并将所有实现放在那里。

如果你坚持拆分同一类的实现,那么 创建类似MyFrame_Car.cppMyFrame_Bus.cpp的东西

  1. #include "MyFrame.hpp"添加到任何需要MyFrame
    (MyFrame.cpp也需要它们的模块)

  2. 将所有模块(CPP 文件)链接在一起。

// MyFrame.hpp
class MyFrame : public wxFrame{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);


private:
void Carfunc();
void Busfunc1(); 
void Busfunc2(); 
void Busfunc3(); 
...
...
}
// MyFrame_Bus.cpp
void MyFrame::Busfunc1(){
// do stuff here
}
void MyFrame::Busfunc2(){
// do stuff here
}
void MyFrame::Busfunc3(){
// do stuff here
}
// MyFrame_Car.cpp
void MyFrame::Carfunc(){
// do stuff here
}

最新更新