我正在嘗試編寫一系列使用相同main(main.cpp)文件但具有不同輔助源文件(object1.cpp,object2.cpp等)的程序。因此,我將主要編譯它們是這樣的:C++使用不同文件中的類
g++ -o program1.exe main.cpp object1.cpp
g++ -o program2.exe main.cpp object2.cpp
我想要做的是有objectN.cpp定義與實現的某些方法,這將在主文件被稱爲類。源代碼是這個樣子:
頭文件(object.hpp)
#ifndef INCLUDE_OBJECT_HPP
#define INCLUDE_OBJECT_HPP
class MyObjectInterface
{
public:
MyObjectInterface();
virtual ~MyObjectInterface() {};
virtual void MethodA() = 0;
virtual void MethodB() = 0;
};
#endif
object1.cpp
#include <iostream>
#include "object.hpp"
using namespace std;
class MyObject : public MyObjectInterface
{
private:
int member;
public:
MyObject(int a) { member = a; }
void MethodA() { cout << member << endl; }
void MethodB() { cout << member*2 << endl; }
};
的main.cpp
#include <iostream>
#include "object.hpp"
using namespace std;
MyObjectInterface *x;
int main()
{
x = new MyObject(1);
x->MethodA();
x->MethodB();
return 0;
}
object2.cpp會與object1.cpp具有相似的結構,但該類將具有不同的數據成員。
我不能得到這個工作,因爲我需要在main.cpp中包含MyObject的類聲明。但是每個對象的* .cpp文件都會用不同的成員聲明MyObject類,所以我不能簡單地製作一個單獨的object.hpp頭並將其包含在main中,因爲我需要不同對象的頭。主要唯一需要知道的是方法。
我希望我已經清楚地解釋了這個問題;如果不發表評論,我會盡力澄清。似乎應該有一個非常簡單的方法來做這樣的事情,但我無法弄清楚。
感謝
你應該看看[工廠設計模式](http://en.wikipedia.org/wiki/Factory_method_pattern),這對創建main()中使用的具體類很有用。 –