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

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

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

C++ Создать копию объекта производного класса зная указатель на базовый
Создать безымянный объекта класса string C++
Как переопределить дружественную функцию ввода для класса наследника C++
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному C++
Как создать указатель на функцию-член класса и вызвать его? C++
Процедуру для численного(так же аналитического) дифференцирования вынести в отдельную функцию C++
C++ Написать отдельную функцию для вывода матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 17:12     Как создать отдельную функцию для каждого объекта класса #2
Цитата Сообщение от SuiseisekiDesu Посмотреть сообщение
Мне надо сделать так, что бы у объекта obj1 типа Class функция onUpdate () была одной, а у другого объекта этого класса код функции onUpdate() был другой.
Как это можно сделать?
Перегрузите метод.
SuiseisekiDesu
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
12.12.2013, 17:14  [ТС]     Как создать отдельную функцию для каждого объекта класса #3
Цитата Сообщение от programina Посмотреть сообщение
Перегрузите метод.
Как примерно, можешь описать?
programina
 Аватар для programina
1912 / 597 / 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
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6230 / 2959 / 287
Регистрация: 04.12.2011
Сообщений: 7,896
Записей в блоге: 3
12.12.2013, 17:29     Как создать отдельную функцию для каждого объекта класса #5
SuiseisekiDesu, можно ещё использовать наследование и обращаться через указатель или ссылку на базовый класс, тогда получите доступ к виртуальному методу, который определён в наследнике.
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 ();
}
Эти две функции должны быть разными.
programina
 Аватар для programina
1912 / 597 / 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 ();
}
Эти две функции должны быть разными.
О, госпде, назовите их по-разному и все!
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 минуту

О, госпде, назовите их по-разному и все!
Объектов должно быть много, и для каждого объекта эта функция должна быть своя
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.12.2013, 18:05     Как создать отдельную функцию для каждого объекта класса #9
SuiseisekiDesu, делайте по способу IGPIGP, один базовый класс и множество классов наследников и все методы сделайте виртуальными.
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 18:23     Как создать отдельную функцию для каждого объекта класса
Еще ссылки по теме:

C++ Шаблоны и функторы как callback для класса свойства объекта. Код работает - но не должен
C++ Нужно придумать функцию по созданию объекта класса
Спрятать указатель на функцию класса в map и вызвать из другого объекта C++
C++ Передача объекта класса в функцию С++
Как подключить отдельную функцию с помощью #include? C++

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

Или воспользуйтесь поиском по форуму:
programina
 Аватар для programina
1912 / 597 / 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
}
Yandex
Объявления
12.12.2013, 18:23     Как создать отдельную функцию для каждого объекта класса
Ответ Создать тему
Опции темы

Текущее время: 23:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru