Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вопрос по классам и функциям - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реверс строки через итераторы http://www.cyberforum.ru/cpp-beginners/thread351945.html
std::string s="123456"; s.replace(s.begin(),s.end(),s.rbegin(),s.rend()); std::cout<<s<<std::endl; Почему-то работает правильно и не падает. Если предположить наиболее быструю реализацию...
C++ error C2664 Помогите пожалуйста исправить ошибку : ошибка: Ошибка 1 error C2664: void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...): невозможно преобразовать параметр 1 из "const char " в... http://www.cyberforum.ru/cpp-beginners/thread351924.html
C++ Помогите пожалуйста по Одномерному массиву длинных целых чисел!!!
Здравствуйте!!! Помогите пожалуйста решение задачи!!! Одномерный массив длинных целых чисел Задание №1 Составить программу определения среднего значения для увеличивающегося количества чисел...
C++ Работа с zip
Хотелось бы сделать мини обработчик zip архивов для своих нужд, который бы редактировал все zip архивы что найдёт в папке. Ну из возможностей нужна возможность редактирования txt файлов внутри zip...
C++ Дано действительное число a. Для функции f(x) вычислить f(a) http://www.cyberforum.ru/cpp-beginners/thread351917.html
Дано действительное число a. Для функции f(x) вычислить f(a). Решите пожалуйста. Заранее благодарен.
C++ Вывод на печать Спроектируйте и отладьте программу, осуществляющую ввод массива деталей с указанием шифра детали, ее цены и количества данного шифра деталей, а также осуществляющую формирование и вывод платежной... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18031 / 6263 / 427
Регистрация: 30.03.2009
Сообщений: 17,214
Записей в блоге: 27
15.09.2011, 23:45
Цитата Сообщение от Razzeeyy Посмотреть сообщение
Здравствуйте, вообщем мне надо реализовать примерно такое дело:
имеется класс the_class
нужно чтобы у каждого экземпляра была разная(собственная) функция допустим class_action

Как это реализовать?

для наглядности что я хочу, примерно:

the_class cat;
the_class monkey;

и вот я хочу чтобы cat и monkey имели метод (или же функцию снаружи им можно было бы передать) который был бы для них свой, т.е. чтобы метод для cat описывался вне класса и метод для monkey описывался вне класса.

p.s. я не силён в терминологии поэтому где то мог неправильно выразиться, но надеюсь вы меня поймете.
На заре моего программирования на Си++ я тоже натыкался на эту ошибку. Именно так я себе представлял виртуальное наследование. Так сделать нельзя. Технически, конечно, можно, работая через указатель на функцию, но идеологически это неправильно. Класс описывает поведение, а экземпляр класса - разновидность. Действие относится к поведению. Поэтому правильно (с точки зрения ООП) в данном случае поступать так:

Построить базовый класс the_class с виртуальным методом, построить два дополнительных (производных) класса tha_cat и the_monkey, в которых переопределять виртуальный метод, и создать два экземпляра cat и monkey

Добавлено через 4 минуты
Цитата Сообщение от Razzeeyy Посмотреть сообщение
а ведь если создавать общий класс и наследовать от него класс с методом, то получается что переменные будут общие для всех "дочерних" классов...
Общие по описанию. Но каждый экземпляр будет содержать свои значения.

В твоём случае будет что-то типа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class the_class
{
  virtual void method (void);
};
 
class the_class_cat
{
  virtual void method (void)
  {
    cout << "method for the_class_cat";
  }
};
 
class the_class_monkey
{
  virtual void method (void)
  {
    cout << "method for the_class_monkey";
  }
};
 
void call_method (the_class *p)
{
  p->method();
}
 
the_class_cat cat;
the_class_monkey monkey;
 
call_method (&cat);
call_method (&monkey);
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru