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

Вызов метода класса без создания экземпляра класса. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.88
ovoshlook
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
21.05.2011, 17:01     Вызов метода класса без создания экземпляра класса. #1
В общем мне для функционирования одной программы нужно постоянно вызывать метод одного из классов. Я это делаю с помощью new - delete. Мне кажется, что ради вызова одного метода (а вызывать мне его нужно постоянно) создавать экземпляр а потом его удалять как то достаточно сурово (что называется из пушки по воробьям). Возможны ли другие решения данного вопроса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 17:01     Вызов метода класса без создания экземпляра класса.
Посмотрите здесь:

Ошибка создания экземпляра класса C++
C++ Вызов метода класса
C++ Вызов метода производного класса через обращение к методу базового класса
Вызов метода базового класса из класса-потомка C++
C++ STL вызов метода класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dyosick
 Аватар для dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178
21.05.2011, 17:09     Вызов метода класса без создания экземпляра класса. #2
1-ый вариант: Насколько я знаю, конечно, если не ошибаюсь, можно создать в твоем классе статическую функцию, которую вызвать можно без создания экземпляра класса.

2-ой вариант: Если знаком с функторами и библ. boost, то можно воспользоваться function и присвоить ему ссылку на твой метод класса. И тогда сможешь вызывать свой метод, когда захочешь, не создавая при этом экземпляр класса
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
21.05.2011, 17:14     Вызов метода класса без создания экземпляра класса. #3
ovoshlook, если метод вызывается в другом методе класса этого же класса, то не надо создавать экземпляр класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
    ...
    void func1();
    void func2()
    {
         ...
         func1();
         ...
    }
    ...
};
Покажите код.
ovoshlook
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
21.05.2011, 17:16  [ТС]     Вызов метода класса без создания экземпляра класса. #4
-comrade-,
Не. Это я понимаю что не нужно. В том то и дело что метод вызывается в методе другого класса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void OTS_MainWindow::ChosenQuestionEvent(int)
{
 
    Q=new Question;
    if (QuestionTabWidget->currentIndex()>-1)
        {
            if (TypeOfQuestionComboBox->currentIndex()==1)
                {
                    DeleteAllWidgets(QuestionTabWidget->currentWidget()->layout());
                    Q->SingleOrManyVariantsQuestionForm(QuestionTabWidget);
                }
            delete Q;
        }
    else
        QMessageBox::information(0,tr("information"),tr("No tabs for adding"),QMessageBox::Ok|QMessageBox::NoButton);
}
Цитата Сообщение от dyosick Посмотреть сообщение
1-ый вариант: Насколько я знаю, конечно, если не ошибаюсь, можно создать в твоем классе статическую функцию, которую вызвать можно без создания экземпляра класса.

2-ой вариант: Если знаком с функторами и библ. boost, то можно воспользоваться function и присвоить ему ссылку на твой метод класса. И тогда сможешь вызывать свой метод, когда захочешь, не создавая при этом экземпляр класса
Первый вариант не совсем подходит поскольку этот метод должен создавать еще много объектов которые описаны в этом же классе (ну например на пустое окно накидывает несколько кнопок и тп которые описаны в классе, метод которого я вызываю). Тогда придется описывать все эти объекты как статики. Но вопрос в том что эти экземпляры создаются несколько раз, на разных окнах и получается что ссылаться они будут на одну область памяти. Ну по кайней мере в моем понимании так. может я чего то недопонял конечно.

Со вторым вариантом не знаком. сейчас буду читать)
Yandex
Объявления
21.05.2011, 17:16     Вызов метода класса без создания экземпляра класса.
Ответ Создать тему
Опции темы

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