0 / 0 / 0
Регистрация: 03.07.2016
Сообщений: 2

Вызвать конструктор произвольного класса в другом классе

03.07.2016, 11:22. Показов 3758. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть необходимость вызвать конструктор какого-либо класса в методе другого класса. Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A{};
class B: public A {};
class C: public A {};
class mass {
    int* m;
    mass(int num, ??some_class??) {
        m = new int* [num];
        for (int i = 0; i < num; i++) {
            m[i] = new ??some_class??(i);
        };
    };
};
Где ??some_class?? - это классы C или B или любой другой класс естественно с одинаковыми конструкторами.
Подскажите реализацию данной конструкции.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.07.2016, 11:22
Ответы с готовыми решениями:

Вызвать метод класса в другом классе
Подскажите как мне вызвать метод класса в другом классе ?

Массив объектов класса в другом классе (композиция). Компилятор ругается на конструктор
Суть задания: есть 1 класс надо создать 2-ой класс для работы с коллецией 1-го. 1&gt;main.obj : error LNK2019: ссылка на неразрешенный...

Как вызвать стринг из одного класса чтобы он был виден в другом классе?
Доброго дня всем,у меня появился вопрос по классам. И так,у меня есть 2 класса ProcessClass.java и My30.java.В процессе ProcessClass.java...

3
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
03.07.2016, 11:28
Конструктор some_class Вам придется явно написать когда создается объект mass:
C++
1
mass m(1,C(параметры конструктора С));
Или заранее создать объект C:
C++
1
2
C ccc(параметры конструктора С);
mass m(1,ccc);
0
0 / 0 / 0
Регистрация: 03.07.2016
Сообщений: 2
03.07.2016, 12:23  [ТС]
C++
1
mass m(1,C(параметры конструктора С));
Я так понимаю, в данном случае я в конструктор класса mass передам объект класса C ?
Но я хотел сделать массив объектов в конструкторе класса mass...

Добавлено через 49 минут
Сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A{};
class B: public A {};
class C: public A {};
class mass {
    int* m;
    mass(int num, int type = 0) {
        m = new int* [num];
        for (int i = 0; i < num; i++) {
            if (type == 1) { // Вызов класса B
                m[i] = (int) new B(i);
            };
        };
    };
};
Жаль, что необходимо определять заранее тип вызываемого класса.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
03.07.2016, 14:53
Цитата Сообщение от fenestarh Посмотреть сообщение
Где ??some_class?? - это классы C или B или любой другой класс естественно с одинаковыми конструкторами.
Подскажите реализацию данной конструкции.
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
class A {};
class B: public A {
public:
    B(size_t i) {}
};
class C: public A {
public:
    C(size_t i) {}
};
 
template <typename T>
struct select_type
{
    typedef T type;
};
 
class mass 
{
public: 
    template <typename T>
    mass(size_t count, select_type<T>)
        : m_count(count)
        , m_data(new A*[count])
    {
        for(size_t i = 0; i < count; i++) 
        {
            m_data[i] = new T(i);
        }
    }
    ~mass()
    {
        for(size_t i = 0; i < m_count; i++) 
        {
            delete m_data[i];
        } 
        delete[] m_data;
    }
    
private:
    size_t m_count;
    A **   m_data;
};
 
int main()
{
    mass m1(10, select_type<B>());
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2016, 14:53
Помогаю со студенческими работами здесь

Как вызвать метод из одного класса чтобы он был виден в другом классе?(Отсылка от старой темы)
Добрый вечер,Я почти разобрался только у меня последний вопрос Как исправить?Смотрите скрин. Надо что бы не было такой ошибки. В...

Нужно вызвать через сторонний метод(в другом классе,который в другом файле) метод в форме
public void Print_Inform(int numb1,int znak,int numb2) { switch(znak) { case 1: label2.Text = &quot;+&quot;; break; case...

Как использовать объект класса, созданого в определеном классе, в другом классе
У меня такой вопрос,как использовать объект класса,созданого в определеном классе,в другом классе.У меня есть объект pl класса Player,это...

Вызвать переменную в другом классе
Подскажите я сделал отдельный класс Version и там сделал public void VersionServer() Как мне в классе Program в static void Main(string...

Вызвать событие в другом классе
Добрый день. Есть класс MainWindow, в нём есть функция AddPreloadedCharts(). Есть статический класс DataManager, в котором хранятся...


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

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

Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru