多个类的共享模板成员函数

时间:2010-10-25 09:36:15

标签: c++ templates

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

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

最终结果应该是:

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中,所以我不能在那里覆盖它。

1 个答案:

答案 0 :(得分:1)

如果您所说的是所有这些类都继承自包含memberX的LibClass,那么只需添加一层继承:

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

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