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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.61
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
#1

Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? - C++

12.08.2008, 01:43. Просмотров 3967. Ответов 14
Метки нет (Все метки)

функция в классе в котором она прописана объявлена как паблик.
C++
1
2
3
4
5
6
7
8
9
void auction::rvectoroldtime(int oldtime1, double low, double high )
{
    vectoroldtime=(double *)calloc(oldtime*4, sizeof(double));
    for(int i=0; i<4*oldtime; i++)
    {
        vectoroldtime[i]=neyro::frand(double low, double high);
    }
    return;
}
вот такой код не компилица.
C++
1
2
3
4
5
6
7
8
9
void auction::rvectoroldtime(int oldtime1, double low, double high )
{
    vectoroldtime=(double *)calloc(oldtime*4, sizeof(double));
    for(int i=0; i<4*oldtime; i++)
    {
        vectoroldtime[i]=frand(double low, double high);
    }
    return;
}
такой тоже.
нужно использовать функцию neyro::frand(double low, double high) в классе auction

вот сама функция
C++
1
2
3
4
5
6
7
8
double neyro::frand(double low, double high)
{
    double intrand;
    int i=rand()%30000;
    intrand=low+(double)i/10000*(high-low);
    //cout <<i <<"  "<<intrand<<"  "<< (double)i/10000<<"\n";
    return intrand;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2008, 01:43     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)?
Посмотрите здесь:
Указатель на функцию-член одного класса в другом классе - C++ C++
C++ Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?
C++ Как сделать компоненты базового класса доступными в производном классе, но недоступными вне классов?
C++ Объект класса в другом классе
C++ Создание класса в другом классе
C++ Вызвать метод класса в другом классе
Массив элементов класса в другом классе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 01:56     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #2
Не понял смысла объявлять функцию frand в классе neyro.Она не использует этот класс. Можно объявить ее глобально или объявить ее и в классe auction
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
12.08.2008, 02:00     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #3
имхо надо обьявлять ее как статик, хотя незнаю что это даст, но тогда ее можно будет вызывать
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
12.08.2008, 02:00  [ТС]     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #4
не она использует этот класс а оба класса используют её.
допустим я обявлю её глобально а если бы я не захотел этого делать? в более сложном случае?
на будущее.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 02:04     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #5
Имеет смысл объявлять функцию как член класса,если функция работает с классом. Не вижу логики в этом объявлении.Объяви ее до объявления классов обычной глобальной функцией.В чем проблема? Зачем в теле класса?
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
12.08.2008, 02:06     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #6
или наследовать класс как вариант

Добавлено через 30 секунд
или вынести в отдельный хедир и инклудить када надо
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
12.08.2008, 02:07  [ТС]     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #7

Использование в ваших программах методов класса
По мере создания методов класса возможны ситуации, когда функция, созданная вами для использования классом, может быть полезна для операций вашей программы, которые не включают объекты класса. Например, в классе menu была определена функция clear_screen, которую вы, возможно, захотите использовать в программе. Если ваш класс содержит метод, который вы захотите использовать вне объекта класса, поставьте перед его прототипом ключевое слово static и объявите этот метод как public:
public:
static void clear_screen(void);
Внутри вашей программы для вызова такой функции используйте оператор глобального разрешения, как показано ниже:
menu::clear_screen();
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.08.2008, 02:08     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #8
Цитата Сообщение от Spo1ler Посмотреть сообщение
или наследовать класс как вариант
Да не вариант! Логики нет!Зачем? Вызов функции -члена класса вообще отдельная штука,ей в качестве параметра передается указатель на объект класса,который вызывает ее. Не нужно это! функция - чисто математическая и к нейрону никакого отношения не имеет. Вынести отдельно и все.
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
12.08.2008, 02:22     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #9
ну раз ему так надо, то пусть делает. самое логичное - наследовать класс
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
12.08.2008, 02:24  [ТС]     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #10
действительно обявить глобальной оказалось лучше
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
12.08.2008, 02:25     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #11
1)и вообще, легче и впрямь сделать хедир с маленькими встраиваемыми функциями
2) вообще то, для инициализации rand надо делать srand(time(NULL));
3) код нелогичен, зачем использовать лишнюю переменную, можно писать (rand()%x) прямо в выражении
ЗЫ глобальные это в отдельном хедире?
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
12.08.2008, 02:33  [ТС]     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #12
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Да не вариант! Логики нет!Зачем? Вызов функции -члена класса вообще отдельная штука,ей в качестве параметра передается указатель на объект класса,который вызывает ее. Не нужно это! функция - чисто математическая и к нейрону никакого отношения не имеет. Вынести отдельно и все.
да это точно. это генератор случайных чисел.
я уже обявил её глобальной в данном случае таклучше оказалось.
но и за информацию об указателе static спасибо)))

Добавлено через 6 минут
Цитата Сообщение от Spo1ler Посмотреть сообщение
1)и вообще, легче и впрямь сделать хедир с маленькими встраиваемыми функциями
2) вообще то, для инициализации rand надо делать srand(time(NULL));
3) код нелогичен, зачем использовать лишнюю переменную, можно писать (rand()%x) прямо в выражении
ЗЫ глобальные это в отдельном хедире?
1) как кому нравиться. я просто не умею эти хедиры подключать

2)а без инициализации что происходит?
где эти строки писать?srand(time(NULL));

3) код логичен. это сейчас мне нужно равномерно распределнное число, а завтра может понадобиться экспоненциально распределёённое число. что ж мне весь код переписывать?
а так изменил функцию и готово
urkovsky
6 / 6 / 0
Регистрация: 07.08.2008
Сообщений: 22
12.08.2008, 08:55     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #13
я просто не умею эти хедиры подключать
Надо учиться, очень удобно бывает

А вообще, я бы написал статический хелпер
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65
12.08.2008, 10:31  [ТС]     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #14
ну такнаучити!
а что такое динамический хелпер?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2008, 10:56     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)?
Еще ссылки по теме:
C++ Использование объектов класса в другом классе
C++ Классы: определение идентификатора класса, в другом классе
C++ Вызвать конструктор произвольного класса в другом классе
Получение данных от одного класса в другом классе. C++
Создать объект шаблонного класса в другом классе C++

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

Или воспользуйтесь поиском по форуму:
urkovsky
6 / 6 / 0
Регистрация: 07.08.2008
Сообщений: 22
12.08.2008, 10:56     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? #15
динамический хелпер пустое понятие. хелпер не имеет собственного состояния, он лишь реализует некий функционал. в твоем случае я бы сделал следующим макаром.

neyro.h - сигнатура
C++
1
2
3
4
5
6
class Neyro
{
 public: double frand(double low, double high);
};
 
static const Neyro NeyroInstance; // экземпляр
neyro.cpp - реализация
C++
1
2
3
4
5
6
7
8
double neyro::frand(double low, double high)
{
    double intrand;
    int i=rand()%30000;
    intrand=low+(double)i/10000*(high-low);
    //cout <<i <<"  "<<intrand<<"  "<< (double)i/10000<<"\n";
    return intrand;
}
test.cpp - использование
C++
1
2
3
4
5
6
#include "neyro.h"
 
void test()
{
  NeyroInstance.frand(a,b);
}
Yandex
Объявления
12.08.2008, 10:56     Как использовать функцию класса в другом классе (ни один из классов не наследует другой)?
Ответ Создать тему
Опции темы

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