我有多个类,它们的行为完全不同,但是同时,它们共享必须访问成员变量的通用函数。

所以我要做的是创建一个模板化的成员函数,以避免额外的复制粘贴代码重复。

最终结果应为:

ClassA::CallFoo()
ClassB::CallFoo()
ClassC::CallFoo()


其中,CallFoo()是在共享文件中定义的,例如[weirdo假设语法]

<template this* T>::CallFoo(){T->memberX->DoStuff();}

用C ++可以做到吗?我似乎找不到任何有关代码重用和多个类的东西。

编辑:
我有多个类,ClassA,ClassB,ClassC,... ClassX,所有这些类都有一个成员变量memberX。为了在类的成员函数中使用该成员变量,我必须对该变量进行一些设置和预处理,这对于所有类都是相同的。因此,ClassA可以使用方法DoCoolStuff1()来调用[共享代码]以获取更新的共享变量,ClassB可以使用方法DoBoringStuff1()来调用[共享代码]。

不幸的是,memberX不在我的源代码中,而是在库标题ClassA:public LibClass中,所以我不能在那里覆盖它。

最佳答案

如果您要说的是所有这些类都继承自包含memberX的LibClass,则只需再增加一层继承:

class myLibClass : public LibClass
{
    void CallFoo() { // do stuff with memberX }
};

class classA : public myLibClass {};
class classB : public myLibClass {};
etc...

09-06 21:08