Общая функция-член шаблона нескольких классов - PullRequest
0 голосов
/ 25 октября 2010

У меня есть несколько классов, которые совершенно различаются по своему поведению, но в то же время имеют общие функции, которые должны обращаться к переменным-членам.

Итак, я хочу создать шаблонфункция-член, чтобы избежать дополнительного дублирования кода при копировании-вставке.

Окончательный результат должен выглядеть следующим образом:

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

где CallFoo () определен в общем файле, как [гипотетический синтаксис weirdo]

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

Возможно ли что-то подобное в C ++?Кажется, я не могу найти что-либо, касающееся повторного использования кода и нескольких классов.

EDIT: У меня есть несколько классов, ClassA, ClassB, ClassC, ... ClassX, каждый из которых имеет переменную-членmemberX.Чтобы использовать эту переменную-член внутри функций-членов классов, я должен выполнить некоторую настройку и предварительную обработку этой переменной, которая одинакова для всех классов.Поэтому ClassA может иметь метод DoCoolStuff1 (), который должен вызывать [общий код], чтобы получить обновленную общую переменную, а ClassB может иметь метод DoBoringStuff1 (), который также вызывает [общий код].

К сожалению, memberXне в моем исходном коде, а в заголовках библиотек ClassA: public LibClass, поэтому я не могу переопределить его там.

1 Ответ

1 голос
/ 25 октября 2010

Если вы говорите, что все эти классы наследуются от LibClass, который содержит memberX, то просто добавьте еще один уровень наследования:

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

class classA : public myLibClass {};
class classB : public myLibClass {};
etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...