Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.88
ovoshlook
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
#1

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

21.05.2011, 17:01. Просмотров 6030. Ответов 3
Метки нет (Все метки)

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

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Вызов метода внутреннего класса методом внешнего класса - C++
Не могу разобраться как реализовать вложенный класс и как его вызвать. Занимаюсь по Лафоре, про вложенные классы ничего, а задача в конце...

Вызов динамического метода класса по указателю на объект класса - C++
Как это можно сделать? И хотелось бы как можно проще.

Вызов метода базового класса из класса-потомка - C++
Нужно вызывать из метода, переопределенного в потомке, соответствующий метод базового класса. При этом они являются виртуальными. Вот...

Вызов метода класса из метода другого класса - C++
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

Способ создания экземпляра класса - C++
Ниже в скрипте отметила два варианта. В чужих скриптах встречаю оба время от времени. Интересно, в чем принципиальное различие и как...

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

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

Со вторым вариантом не знаком. сейчас буду читать)
0
21.05.2011, 17:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2011, 17:16
Привет! Вот еще темы с ответами:

Ошибка создания экземпляра класса - C++
Собственно ошибка в мейне error C2227: left of '->AddLast' must point to class/struct/union/generic type Содержимое StringList.h: ...

Вызов метода класса - C++
main.cpp: #include "Processor.h" int main() { pr.show(); //здесь пишет ошибку return 0; }

Создание экземпляра класса в массиве без объявления имени - C++
Предположим, у меня имеется куча частиц, разлетающихся в разные стороны и исчезающих впоследствии. Их судьба меня не волнует, нужно лишь...

Вызов метода класса из DLL - C++
Добрый вечер. Имеется длл, в которой есть: 1. Класс, содержащий метод 2. Функция, возвращающая объект этого класса Если п.2...


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

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

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