我是 C++ 新手,现在我有一个问题需要解决。我在A库中有一个类,在B库中有相同的类,C函数是A和B之间的唯一连接,我需要传递在A中实现的类并在B中运行它,最好的方法是什么C函数? 在库A中
class ClassAImp : public ClassA
{
public:
ClassAImp();
~ClassAImp();
void Setup() override {/* do some setup */};
void TearDown() override {/* do teardown stuff */};
void runMethodA(void* ptr) override {/* do method A stuff */};
}
class ClassA
{
public:
virtual void Setup() = 0;
virtual TearDown() = 0;
virtual runMethodA(void* ptr) = 0;
}
在库B
class ClassB
{
public:
virtual void Setup() = 0;
virtual TearDown() = 0;
virtual runMethodA(void* ptr) = 0;
}
目前我在 C 中所做的是
class ClassBImp : public ClassB
{
public:
ClassBImp(std::shared_ptr<ClassA> _classAObj) : classAObj(_classAObj) {};
virtual ~ClassBImp();
void Setup() override { if (classAObj) classAObj->Setup(); };
void TearDown() override { if (classAObj) classAObj->TearDown(); };
void runMethodA(void* ptr) override { if (classAObj) classAObj->runMethodA(ptr); };
private:
std::shared_ptr<ClassA> classAObj;
}
并将 ClassBImpPtr(作为 std::shared_ptr)传递给 B 库。
我对库 A 或 B 没有任何控制权,只能在 C 中执行操作并将实现的对象传递回 B。这是在 C++ 中执行操作的正确方法吗(11?)有更好的方法吗这样做吗?
最佳答案
因为您获得的是一个已经构造的 ClassAImpl
对象,所以这已经是最好的了。
关于c++ - C++中 'glue'两个类实现的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75558658/