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

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

Войти
Регистрация
Восстановить пароль
 
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
#1

Определение объекта, который вызвает конструктор. - C++

15.03.2011, 18:33. Просмотров 788. Ответов 4
Метки нет (Все метки)

Привет!
Подскажите пожалуйста, как определить, какой из объектов в программе (программа очень большая и писал ее не я) вызывает конструктор класса!?
Класс имеет 2 конструктора.
Один на объект с параметрами, второй на объект без параметров.
Найдено было 2 объекта - оба с параметрами.
Но один раз, вызывается конструктор без параметра, из чего следует, что где-то есть объект без параметра.
Вопрос:
Можно ли в отладчике сделать "шаг назад"?
Про поиск по названию класса знаю, да.

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 18:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определение объекта, который вызвает конструктор. (C++):

Зачем нужен конструктор объекта ostringstream (строковый поток который) с двумя аргументами? - C++
От него всё равно толку как от быка молока. А вроде как предназначен для записи чего-то там в строку... #include <string> #include...

Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). - C++
Помогите пожалуйста написать программу на С++. Просто скоро курсовую сдавать, а классы мы еще не разобрали и не успеваем. Поэтому не знаю...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -> i = i; } }; Конструктор Test::Test всегда вызывается...

Не срабатывает конструктор объекта - C++
Здравствуйте, уважаемые форумчане. Это моё первое сообщение на форуме, поэтому прошу сильно не пинать, если не там создал тему или спросил...

Конструктор. Создание нового объекта - C++
Всем привет, Пишу программу "Мой сборник CD". Как можно создавать объекты не вводя их количество в начале программы? Например, если...

Конструктор копии при возвращении объекта - C++
main(): #include"Class_Taxi.h" #include<vld.h> #include<iostream> #include<locale.h> #define MAX 15 using namespace std; ...

4
HighPredator
5541 / 1854 / 346
Регистрация: 10.12.2010
Сообщений: 5,471
Записей в блоге: 2
15.03.2011, 19:43 #2
Цитата Сообщение от half-node Посмотреть сообщение
Но один раз, вызывается конструктор без параметра, из чего следует, что где-то есть объект без параметра.
Вы сделали неверный вывод. Вполне могло быть так что конструктор без параметров был вызван не на этапе объявления переменной, а в качестве скажем "принудительной процедуры зануления". На своей практике очень часто встречал такой способ очистки объекта. Рекомендую вам привести код, иначе это превратится о в абстрактные рассуждения.
0
garikkk1
-51 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 44
15.03.2011, 21:25 #3
именно!
0
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
16.03.2011, 16:29  [ТС] #4
А код чего, собственно, выложить?
Код конструктора? Пожалуйста (хотя я слабо себе представляю, чем он поможет в разрезе моего вопроса )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// конструктор с параметром
CMyIniFile(const char* FileName)
{
   // обработка командной строки на наличие параметров и открытия соответствующего ini файла
   // если параметров нет, открывается файл лежащий в CurrentDir с именем FileName
}
// конструктор без параметра
CMyIniFile()
{
   CMyCurDir m_CurDir;  // определение рабочей дирректории
   m_IniFileName = m_CurDir;
   m_IniFileName += "\\";
   m_IniFileName += "Settings";
   m_IniFileName += ".ini";
}
Вот прям так и написано. Повторюсь, писал не я. )
Весь код нет возможности выложить вовсе, там десятки файлов, по 500-3000 строк.

Соответственно, создается некоторый объект:
C++
1
2
CMyIniFile m_ini("params.ini");
CMyIniFile m_iniTest("paramsTest.ini");
В общем вызывался конструктор без параметров. Тот объект я уже нашел.
Вопрос в том, можно ли как-то узнать в режиме отладки, какой из объектов вызвал конструктор?
0
Evg
Эксперт CАвтор FAQ
17951 / 6182 / 413
Регистрация: 30.03.2009
Сообщений: 16,973
Записей в блоге: 27
16.03.2011, 16:40 #5
Цитата Сообщение от half-node Посмотреть сообщение
Подскажите пожалуйста, как определить, какой из объектов в программе (программа очень большая и писал ее не я) вызывает конструктор класса!?
Поставить брейкпоинт в нужном конструкторе, запустить, если реально туда попадём, то в точке остановки посмотреть стек
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2011, 16:40
Привет! Вот еще темы с ответами:

Какой конструктор вызывается при value initialization объекта? - C++
Привет, есть вот такой код, например: #include <iostream> struct Test { int data; Test() : data(30) { std::cout <<...

Как вызвать конструктор для неизвестного объекта? - C++
Добрый вечер. Помогите мне с задачей. Хочу написать шаблонный класс вектор. И в конструкторе по умолчанию нужно прописать конструкцию...

Конструктор копирования для динамического объекта класса приемника - C++
class first_class { public: first_class(int q) { m_q=q; cout<<"First class say HI"<<endl; } ...

Конструктор копии: при возвращении объекта ошибка памяти - C++
Реализация класса: #include"Class_Taxi.h" #include<fstream> #include<conio.h> using namespace std; Zakaz::Zakaz() { ...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
16.03.2011, 16:40
Ответ Создать тему
Опции темы

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