我正在使用Eclipse CDT。這個想法是,我想在一個項目中管理10個小練習(10個無關的問題),因爲它似乎沒有優化創建10個項目。我正在使用這樣的模型: 有一個cpp文件,其中包含名爲「Controller.cpp」的main(),後跟它的頭文件「Controller.h」。每個問題1類,例如:「ex1.cpp」&「ex1 .h「 - >共22個文件。在main()中,我使用開關來選擇要解決的問題。然而,不知道爲什麼,但每個班級,我必須鍵入「.cpp」功能的原型和「 .h」(內部和外部類別)的原型以使其工作:在1個C++項目中管理多個子項目的最佳方法?
「控制器的.cpp「:
#include "Controller.h"
#include "E2P4.h"
#include "E3P3.h"
#include "E3P4.h"
#include "E3P6.h"
#include "E4P1.h"
#include "E4P2.h"
#include "E4P3.h"
#include "E4P4.h"
#include "E7P6.h"
#include "E7P6Apps.h"
#include "E7P7.h"
#include "E7P7Apps.h"
#include <iostream>
#include <string>
using namespace std;
int main(){
string choice;
cout << "Enter choice :" << endl;
cin >> choice ;
if (choice.compare("E2P4") == 0){
E2P4 A;
A.Do();
}
else if (choice.compare("E3P3") == 0){
E3P3 A;
A.Do();
}
else if (choice.compare("E3P4") == 0){
E3P4 A;
A.Do();
}
else if (choice.compare("E3P6") == 0){
E3P6 A;
A.Do();
}
else if (choice.compare("E4P1") == 0){
E4P1 A;
A.Do();
}
else if (choice.compare("E4P2") == 0){
E4P2 A;
A.Do();
}
else if (choice.compare("E4P3") == 0){
E4P3 A;
A.Do();
}
else if (choice.compare("E4P4") == 0){
E4P4 A;
A.Do();
}
else if (choice.compare("E7P6") == 0){
E7P6apps();
}
else if (choice.compare("E7P7") == 0){
E7P6apps();
}
else cout << "Wrong command !!!" ;
return 0;
}
Controller::Controller() {
// TODO Auto-generated constructor stub
}
Controller::~Controller() {
// TODO Auto-generated destructor stub
}
練習:
#ifndef _H_
#define _H_
void Do();
class E2P4 {
public:
void Do();
E2P4();
virtual ~E2P4();
};
#endif /* _H_ */
和:
#include "E2P4.h"
#include <iostream>
void Do();
void E2P4::Do(){
std::cout << "Please input Celsius degree :" << std::endl;
double d;
std::cin >> d ;
double converted = 1.8 * d + 32 ;
std::cout << d << " C degree corresponds " << converted << " F degree";
}
E2P4::E2P4() {
// TODO Auto-generated constructor stub
}
E2P4::~E2P4() {
// TODO Auto-generated destructor stub
}
,這是非常無聊的,因爲每個功能我都要複製原型3次。
雖然最近我找到了另一種方法,而不是每個問題都對待一個類。我在main()中使用「ex1.cpp」,「ex1.h」,「ex1Application.cpp」和「ex1Application.h」與「Controller.cpp」中的main介體「ex1Application.cpp」。也只需要一次原型。但它完全需要41個文件。
有沒有更好的想法來管理這些?
'Do()'和'〜Excercises()'需要**虛擬**,在類「練習」中爲解決方案工作。修正'main()'中類名'Exercise'的錯字。 – Mahesh 2011-03-15 00:06:38
-1:你的基類應該有一個虛擬的析構函數,如果它的目的是作爲一個接口,那麼'Do'應該在基類中聲明爲虛擬的或純虛擬的,這種方法建議隱式向下轉換,原始堆分配可能不是甚至是必要的,在這種情況下你應該更喜歡智能指針。這從根本上說不是比單獨的類更簡單或更優雅的設計。 – AJG85 2011-03-15 00:09:11
@ AJG85 - 這是建議上傳,這是隱含的。不是向下傾斜。 – Mahesh 2011-03-15 00:11:46