29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231

ManagerClass как вызывать функции

15.06.2015, 19:19. Показов 1341. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пишу такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
main.cpp
 
....
ManagerClass* Manager = new ManagerClass;
Manager->CreateData(тип данных);
....
 
managerclass.cpp
......
void ManagerClass::CreateData(типа данных)
{
    if(типа данных == 0)
         ClassA* A = new ClassA;
    else if(типа данных == 1)
         ClassB * B = new ClassB;
}
......
Как потом из main.cpp вызывать функции ClassA и ClassB созданных объектов. Создавать в main указатель на объект не подходит
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2015, 19:19
Ответы с готовыми решениями:

Как вызывать функции из разных мест?
Как вызывать функции, написанные в разных местах. Например, есть две функции a, b. Функция a видит b, b не видит a. Если поменять их...

Как правильно добавлять функции в вектор и вызывать их?
Как правильно добавлять функции в вектор и вызывать их? Вот допустим есть вектор std::vector<void (*)(int, int)> vector; Он...

Как правильно вызывать функцию объекта из другой функции того же объекта?
Доброго дня и ночи, уважаемые программисты! Существует некоторая проблема, на которую я наткнулся, решая задачу по программированию из...

10
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.06.2015, 19:25
В методе ManagerClass::CreateData ты создаёшь локальные объекты, они потеряются при выходе их него.
В такой постановке ты их никак не вызовешь.
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
15.06.2015, 19:33  [ТС]
castaway
Справедливо, а если А и B сделать членами класса, как вызывать функции тогда
Если просто сделать их публичными, то может возникать ошибка вызова например объекта B когда он не иницилизирован
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.06.2015, 19:38
Лучший ответ Сообщение было отмечено Helldrg как решение

Решение

Цитата Сообщение от Helldrg Посмотреть сообщение
Если просто сделать их публичными, то может возникать ошибка вызова например объекта B когда он не иницилизирован
Это решается просто.
В конструкторе присваиваешь указателям на объекты NULL/nullptr.
При вызове делаешь проверку:
C++
1
if ( A ) A->method();
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
15.06.2015, 19:43  [ТС]
castaway
Спасибо большое!!!
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.06.2015, 20:02
Helldrg, м.б. тебе нужно что-то такое (фабричный метод):
C++
1
2
3
4
5
6
7
8
9
10
11
class O;
class A : public O {}
class B : public O {}
O* CreateData(int type) // Возвращает указатель на базовый класс
{
    switch(type) {
        case 0: return new A;
        case 1: return new B;
    }
    return nullptr;
}
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
16.06.2015, 00:46  [ТС]
Tulosba
Кстати на счет паттернов, можете какое - нибудь пособие по ним подсказать
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2015, 08:15
Helldrg, http://bookvoed.ru/book?id=670... At6h8P8HAQ
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
16.06.2015, 13:45  [ТС]
Tulosba
Вы читали эту книгу? Она хорошая?
Просто мне однажды посоветовали видеоуроки "Могелашвили - Паттерны проектирования" так мне утки из его примеров до сих пор снятся в страшных снах =)
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2015, 14:36
Цитата Сообщение от Helldrg Посмотреть сообщение
Вы читали эту книгу? Она хорошая?
Да. Вполне.
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
16.06.2015, 22:52  [ТС]
Tulosba
Cпасибо, начну читать ее тогда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2015, 22:52
Помогаю со студенческими работами здесь

Можно передавать и вызывать из функции в DLL динамические массивы?
Мне нужно создать перегруженные функции удаления элемента из динамического массива с заданным ключом!Можно передавать в функцию и вызывать...

Как вызывать функции из DLL?
Здравствуйте. Как вызывать функции из DLL? Вот например, если функция представляет собой что - то такое: void setValue( int x, int...

Как вызывать функции на ASM из CИ?
Поделитесь плз ссылками на доки про то, как вызывать функцию на ASM из модуля на CИ и функцию на Cи из модуля на ASM. Нужно повысить...

Как правильно вызывать функции
Ребят, объясните как правильно ее вызывать ,пожалуйста.

Как правильно вызывать функции?
Подскажите, пожалуйста, почему не выводится сообщение. При нажатии на кнопку 2, должно генерироваться случайное число 0 или 1,...


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

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

Новые блоги и статьи
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru