我正在尝试编写一系列使用相同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()中使用的具体类很有用。 –