Re[2]: Включение одной функции в несколько классов
От: Andrew001  
Дата: 06.06.08 15:49
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, Andrew001, Вы писали:


A>>Есть некая функция которую нужно сделать элементом нескольких классов

A>>1 — это сделать родительский класс в котором и объявить эту функция
A>>2 — это сделать глобальную функцию к которой обращаться из промежуточных функций-членов этих классов
A>>Оба эти варианта не очень подходят
A>>Какие еще есть варианты?
A>>Возможно ли это сделать через шаблоны?

R>Возможно, например:

R>
R>#include <iostream>
R>#include <string>

R>template<typename T, typename V>
R>void set_value(T& item, const V& value)
R>{
R>  item.value = value;
R>}

R>struct A
R>{
R>  int value;
R>};

R>struct B
R>{
R>  std::string value;
R>};


R>int main() 
R>{
R>  A a;
R>  B b;
  
R>  set_value(a, 123);
R>  set_value(b, "hello");
  
R>  std::cout << a.value << std::endl; //output: "123"
R>  std::cout << b.value << std::endl; //output: "hello"
R>}
R>



нужно чтобы вызов остался прежним
a.set_value(...)
b.set_value(...)

Нет ли какойто возможности типа:
template<typename T>
void T::set_value(...)

ну а в классах:
class A
{
void set_value(...);
};

class B
{
void set_value(...);
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.