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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SuiseisekiDesu
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
#1

Как создать отдельную функцию для каждого объекта класса - C++

12.12.2013, 17:08. Просмотров 518. Ответов 10
Метки нет (Все метки)

Ну например есть класс
C++
1
2
struct Class {
     void onUpdate (); }
Мне надо сделать так, что бы у объекта obj1 типа Class функция onUpdate () была одной, а у другого объекта этого класса код функции onUpdate() был другой.
Как это можно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать отдельную функцию для каждого объекта класса (C++):

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса - C++
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод my_name, метод выводит сообщение This is Base class. От...

Написать отдельную функцию для вывода матрицы - C++
Я новичок помогите разобраться. #include<iostream> #include<windows.h> #include<ctime> using namespace std; void input(int...

Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному - C++
Задание: Пример: Входные данные: 5 4 1 4 5 8 10 5 6 1 9 Выходные данные:

Передача объекта класса в функцию С++ - C++
Всем привет! Возник вопрос по классам. Допустим мне нужно изменить объект класса через функцию вызываемую в main. Я пробовал через...

Как создать указатель на функцию-член класса и вызвать его? - C++
Подскажите как правильно сделать, а в дальнейшем вызвать указатель на функцию член класса: #include "stdafx.h" #include <iostream> ...

Реализовать оператор= для присваивания объекта класса-потомка объекту базового класса - C++
Есть два класса A и B, причем класс B является потомком A. Как реализовать следующее: obj_A = obj_B и obj_B = obj_A? Добавлено через 9...

10
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 17:12 #2
Цитата Сообщение от SuiseisekiDesu Посмотреть сообщение
Мне надо сделать так, что бы у объекта obj1 типа Class функция onUpdate () была одной, а у другого объекта этого класса код функции onUpdate() был другой.
Как это можно сделать?
Перегрузите метод.
1
SuiseisekiDesu
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
12.12.2013, 17:14  [ТС] #3
Цитата Сообщение от programina Посмотреть сообщение
Перегрузите метод.
Как примерно, можешь описать?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 17:23 #4
Цитата Сообщение от SuiseisekiDesu Посмотреть сообщение
Как примерно, можешь описать?
Да, заходишь в гугол и пишешь там "перегрузка функций".

C++
#include <cstdio>
 
int foo(int x)
{
  return x*x;
}
 
int foo(int x, int y)
{
  return x*y;
}
 
 
int main()
{
    printf("%d\n", foo(5));     // 25
    printf("%d\n", foo(3, 4));  // 12
}
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6511 / 3148 / 308
Регистрация: 04.12.2011
Сообщений: 8,716
Записей в блоге: 5
12.12.2013, 17:29 #5
SuiseisekiDesu, можно ещё использовать наследование и обращаться через указатель или ссылку на базовый класс, тогда получите доступ к виртуальному методу, который определён в наследнике.
1
SuiseisekiDesu
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
12.12.2013, 17:52  [ТС] #6
Цитата Сообщение от programina Посмотреть сообщение
Да, заходишь в гугол и пишешь там "перегрузка функций".

C++
#include <cstdio>
 
int foo(int x)
{
  return x*x;
}
 
int foo(int x, int y)
{
  return x*y;
}
 
 
int main()
{
    printf("%d\n", foo(5));     // 25
    printf("%d\n", foo(3, 4));  // 12
}
Ты не совсем понял. Мне нужно примерно это:
C++
1
2
3
4
5
6
7
8
9
10
11
class Item {
     void onEquip ();
}
 
int main () {
     Item item1;
     Item item2;
     ....
     item1.onEquip ();
     item2.onEquip ();
}
Эти две функции должны быть разными.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 17:54 #7
SuiseisekiDesu, для перегрузки еще можно использовать спецификатор const
C++
#include <cstdio>
 
class OBJ
{
    public:
    int foo(int x)
    {
        return x*x;
    }
    
    int foo(int x) const
    {
        return x+x;
    }
};
 
 
int main()
{
    OBJ obj1;
    const OBJ obj2;
    printf("%d\n", obj1.foo(5));    // 25
    printf("%d\n", obj2.foo(3));    // 6
}
Добавлено через 1 минуту
Цитата Сообщение от SuiseisekiDesu Посмотреть сообщение
Ты не совсем понял. Мне нужно примерно это:
C++
1
2
3
4
5
6
7
8
9
10
11
class Item {
     void onEquip ();
}
 
int main () {
     Item item1;
     Item item2;
     ....
     item1.onEquip ();
     item2.onEquip ();
}
Эти две функции должны быть разными.
О, госпде, назовите их по-разному и все!
0
SuiseisekiDesu
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
12.12.2013, 17:58  [ТС] #8
Цитата Сообщение от programina Посмотреть сообщение
SuiseisekiDesu, для перегрузки еще можно использовать спецификатор const
C++
#include <cstdio>
 
class OBJ
{
    public:
    int foo(int x)
    {
        return x*x;
    }
    
    int foo(int x) const
    {
        return x+x;
    }
};
 
 
int main()
{
    OBJ obj1;
    const OBJ obj2;
    printf("%d\n", obj1.foo(5));    // 25
    printf("%d\n", obj2.foo(3));    // 6
}
Добавлено через 1 минуту

О, госпде, назовите их по-разному и все!
Объектов должно быть много, и для каждого объекта эта функция должна быть своя
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 18:05 #9
SuiseisekiDesu, делайте по способу IGPIGP, один базовый класс и множество классов наследников и все методы сделайте виртуальными.
1
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
12.12.2013, 18:05 #10
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
 
using namespace std;
 
class Class
{
public:
    virtual void onUpdate() = 0;
};
 
class Class1 : public Class
{
public:
    virtual void onUpdate();
};
 
void Class1::onUpdate()
{
    std::cout << "1" << std::endl;
}
 
 
class Class2 : public Class
{
public:
    virtual void onUpdate();
};
 
void Class2::onUpdate()
{
    std::cout << "2" << std::endl;
}
 
int main()
{
    Class *c1 = new Class1;
    Class *c2 = new Class2;
 
    c1->onUpdate();
    c2->onUpdate();
 
    delete c1;
    delete c2;
 
    cin.get();
 
    return 0;
}
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 18:23 #11
C++
#include <cstdio>
 
// базовый класс
class Parent
{
    public:
        virtual int foo(int x) = 0; // не используется
};
 
// класс-потомок базового класса
class Children_1 : public Parent
{
    public:
        virtual int foo(int x)
        {
            return x*10; // умножает на 10
        }
};
 
// еще один класс-потомок базового класса
class Children_2 : public Parent
{
    public:
        virtual int foo(int x)
        {
            return x*100; // умножает на 100
        }
};
 
 
int main()
{
    Parent *P;
    Children_1 C1; // 1-й обьект
    Children_2 C2; // 2-й обьект
 
    P = &C1;
    printf("%d\n", P->foo(5));  // 50
 
    P = &C2;
    printf("%d\n", P->foo(5));  // 500
}
0
12.12.2013, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 18:23
Привет! Вот еще темы с ответами:

Создать объект внутри класса, который может вызывать функцию этого класса - C++
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы лифта в здании 2 этажа. Сделал класс...

Процедуру для численного(так же аналитического) дифференцирования вынести в отдельную функцию - C++
Есть программа, но она написана не процедурами, можете пожалуйста помочь и переделать в функции и процедуры, буду очень благодарен, с меня...

Нужно придумать функцию по созданию объекта класса - C++
Нужно придумать функцию ,которая при её вызове будет создавать новый объект класса. Например есть класс Аккаунт. И мне нужно в мейне ,...

Как подключить отдельную функцию с помощью #include? - C++
Я сейчас изучаю функции. Мне интересно, как можно сделать так, чтобы не писать каждый раз в новой программе одну и туже функцию, а написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.