c++ - C++中 'glue'两个类实现的正确方法

标签 c++ c++11

我是 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/

相关文章:

c# - 代码从 C++ 转换为 C# 的问题

c++ - 多线程时一直调用对象析构函数,但对象没有超出范围

c++ - 函数参数的生命周期是多少(需要引用)?

c++ - 如何分析 g++/std::mutex 下的锁争用?

c++ - OpenCV 皮肤检测

c++ - 返回指针而不是 vector::迭代器并将 vector::迭代器转换为指针

c++ - 我的函数如何连接到正确的成员函数

c++ - 模板类、继承和成员函数指针的编译器错误

c++ - 现实程序中来自 c++ <random> 库的随机数生成器

c++ - 枚举整数值的赋值规则是什么?