我已经编写这个应用程序一段时间了,并且有很多函数,我一直试图避免在一个代码块中聚集在一起。
我对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 也是如此),编译器会抱怨!
相反,我建议坚持共同约定,并且:
为类
MyFrame
的声明创建一个名为MyFrame.hpp
的头文件。创建一个
MyFrame.cpp
源文件,并将所有实现放在那里。
如果你坚持拆分同一类的实现,那么 创建类似
MyFrame_Car.cpp
和MyFrame_Bus.cpp
的东西
将
#include "MyFrame.hpp"
添加到任何需要MyFrame
(MyFrame.cpp也需要它们的模块)将所有模块(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
}