2010-10-25 41 views
0

我有多个类在行为上有很大不同,但同时共享必须访问成员变量的通用函数。多个类的共享模板成员函数

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

最终的结果应该是这样的:

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

其中CallFoo()在像一个共享文件被定义[怪人假想语法]

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

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

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

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

+0

可不可以给更具体的例子吗?详细阐述你正试图解决的问题,而不是理论。 – GManNickG 2010-10-25 09:43:18

+0

试图更好地解释,请参阅编辑... – Coder 2010-10-25 09:56:07

+0

你是说所有这些类都是LibClass类的子类,这就是数据成员所在的位置? – 2010-10-25 10:00:40

回答

1

如果你说的是,所有这些类的从每个LibClass,其中包含memberX继承,则只需添加继承多一个层:

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

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