我正在尝试编写一系列程序,它们使用相同的主(main.cpp)文件,但具有不同的辅助源文件(object1.cpp、object2.cpp 等)。所以我将基本上像这样编译它们:
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
对象1.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; }
};
主文件
#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 的类声明。但是每个 object*.cpp 文件都会用不同的成员声明 MyObject 类,所以我不能简单地创建一个单独的 object.hpp 标头并将其包含在 main 中,因为我需要不同的标头用于不同的对象。main 唯一需要知道的是方法。
我希望我已经清楚地解释了这个问题;如果不发表评论,我会尽力澄清。似乎应该有一种非常简单的方法来做这样的事情,但我想不通。
谢谢