Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
SuiseisekiDesu
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
1

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

12.12.2013, 17:08. Просмотров 580. Ответов 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
Ответы с готовыми решениями:

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод...

Написать отдельную функцию для вывода матрицы
Я новичок помогите разобраться. #include<iostream> #include<windows.h>...

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

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

Как создать указатель на функцию-член класса и вызвать его?
Подскажите как правильно сделать, а в дальнейшем вызвать указатель на функцию...

10
programina
2052 / 607 / 41
Регистрация: 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
2052 / 607 / 41
Регистрация: 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
Комп_Оратор)
Эксперт по математике/физике
7079 / 3383 / 458
Регистрация: 04.12.2011
Сообщений: 9,410
Записей в блоге: 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
2052 / 607 / 41
Регистрация: 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
2052 / 607 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 18:05 9
SuiseisekiDesu, делайте по способу IGPIGP, один базовый класс и множество классов наследников и все методы сделайте виртуальными.
1
Megabar
22 / 22 / 7
Регистрация: 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
2052 / 607 / 41
Регистрация: 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

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

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

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


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

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

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