|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
|
Вопрос по классам и функциям15.09.2011, 20:45. Показов 2168. Ответов 25
Метки нет (Все метки)
Здравствуйте, вообщем мне надо реализовать примерно такое дело:
имеется класс the_class нужно чтобы у каждого экземпляра была разная(собственная) функция допустим class_action Как это реализовать? для наглядности что я хочу, примерно: the_class cat; the_class monkey; и вот я хочу чтобы cat и monkey имели метод (или же функцию снаружи им можно было бы передать) который был бы для них свой, т.е. чтобы метод для cat описывался вне класса и метод для monkey описывался вне класса. p.s. я не силён в терминологии поэтому где то мог неправильно выразиться, но надеюсь вы меня поймете.
0
|
|
| 15.09.2011, 20:45 | |
|
Ответы с готовыми решениями:
25
Вопрос по Классам... Вопрос по классам Вопрос по классам |
|
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
|
|
| 15.09.2011, 20:54 | |
|
наверно нужно объявить базовый класс, в нем объявить чисто виртуаьную функцию, унаследовать от
этого класса те 2 и определить виртуальную функцию базового класса в каждом производном
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 15.09.2011, 20:59 | |
|
Я не уверен полностью, а мб просто использовать для этих целей перегрузку конструктора?
0
|
|
|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
|
| 15.09.2011, 20:59 [ТС] | |
|
а можно простенький пример кода, для наглядности?
0
|
|
|
*.pwn
|
|
| 15.09.2011, 21:08 | |
|
Razzeeyy, Вы хотите иметь 1 класс, но чтобы различные экземпляры (объекты) этого же класса имели разные методы, я правильно Вас понял?
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||
| 15.09.2011, 21:12 | |||||||
0
|
|||||||
|
22 / 22 / 2
Регистрация: 11.04.2011
Сообщений: 67
|
|
| 15.09.2011, 21:17 | |
|
Имхо, нужно перегружать конструктор, устанавливая разное значение какой-то переменной для разных "сущностей", а в описании функций с помощью конструкции if или switch по этой переменной описывать соответствующее поведение функции.
А вообще правильнее воспользоваться советом PointsEqual: сделать базовый класс Animal с чисто виртуальным методом, отнаследовать от него Cat и Monkey, описав в них этот виртуальный метод в соответствии с требованиями производного класса.
0
|
|
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
||
| 15.09.2011, 21:24 | ||
|
Решение с некоей переменной плохое с точки зрения развития. Если виртуальную функцию мы просто добавляем новую для нового типа, не изменяя уже работающий код, то в варианте с переменной придется каждый раз лезть в наш switch и добавлять туда новую ветку проверки.
0
|
||
|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
|||
| 15.09.2011, 21:28 [ТС] | |||
|
______________________________________ Ребят, забыл зацитировать что я просил показать примерным кодом, так это не перегрузку конструктора, а
0
|
|||
|
22 / 22 / 2
Регистрация: 11.04.2011
Сообщений: 67
|
||
| 15.09.2011, 21:30 | ||
![]() Первый вариант годится разве что для извращенного случая, когда требуется описать разное поведение метода одного-единственного класса, то есть без применения наследования и полиморфизма.
0
|
||
|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
|
| 15.09.2011, 21:35 [ТС] | |
|
я вот не понял...
я пробовал создать просто виртуальный метод в классе, без наследования его от чего либо, компилятор ругнулся что-то вроде "undefined reference to vtable". а ведь если создавать общий класс и наследовать от него класс с методом, то получается что переменные будут общие для всех "дочерних" классов... или тогде придеться обьявлять на каждый экземпляр родительский класс, затем для каждого экземпляра создавать "дочерний" класс и описывать функцию или как это делается? я не совсем понял...
0
|
|
|
22 / 22 / 2
Регистрация: 11.04.2011
Сообщений: 67
|
||||||
| 15.09.2011, 21:45 | ||||||
|
Что-то вроде этого:
0
|
||||||
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 15.09.2011, 21:45 | |
|
Razzeeyy, покажи код.
0
|
|
|
22 / 22 / 2
Регистрация: 11.04.2011
Сообщений: 67
|
||
| 15.09.2011, 21:52 | ||
|
P.S. Я советую Вам прочитать о наследовании и полиморфизме в какой-нибудь хорошей книге по C++ Тогда многое встанет на свои места.
0
|
||
|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
||||||||
| 15.09.2011, 22:06 [ТС] | ||||||||
0
|
||||||||
|
22 / 22 / 2
Регистрация: 11.04.2011
Сообщений: 67
|
||
| 15.09.2011, 22:15 | ||
|
Заметил, что очень многие на этом форуме советуют книгу "Дейтел П.Дж., Дейтел Х.М. Как программировать на С++.". Сам я недавно освежил в памяти C++ по книге Герберта Шилдта, планирую купить книгу Страуструпа.
0
|
||
|
|
||||||||
| 15.09.2011, 23:45 | ||||||||
|
Построить базовый класс the_class с виртуальным методом, построить два дополнительных (производных) класса tha_cat и the_monkey, в которых переопределять виртуальный метод, и создать два экземпляра cat и monkey Добавлено через 4 минуты В твоём случае будет что-то типа
0
|
||||||||
|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
|||||||
| 16.09.2011, 00:25 [ТС] | |||||||
|
Evg, только я там что то не увидел наследования... Сейчас даже откомпилю то, что вы привели, буду разбираться
![]() offtop. вся канитель из-за того что математичка задала написать программу по алгебре для отрисовки косинуса =) отрисовку быстро написал, на openGL, решил заодно сделать gui-велосипедную кнопку на опенгл)) для отображения текста наверно нагуглю какую то библиотеку... Добавлено через 8 минут руководствуясь ошибками компилятора допилил примерный код от Evg вот до такого состояния:
0
|
|||||||
|
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
|
|||||||||||
| 16.09.2011, 00:59 | |||||||||||
|
Вот явный пример виртуальной функции в базовом класе она возвращает куб числа а в наследственном переопределена и возвращает квадрат:
ошыбся в 1-м месте :
0
|
|||||||||||
|
30 / 7 / 0
Регистрация: 01.03.2011
Сообщений: 95
|
|
| 16.09.2011, 01:13 [ТС] | |
|
KING1994, спасибо, шас будим разбирацо...
0
|
|
| 16.09.2011, 01:13 | |
|
Помогаю со студенческими работами здесь
20
Вопрос по классам Вопрос по классам Нужен учебник по стандартным функциям/классам вопрос по классам Вопрос по классам в Фортране Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|