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

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

Войти
Регистрация
Восстановить пароль
 
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
#1

При передаче ссылки на указатель программа зависает - C++

09.02.2013, 20:21. Просмотров 306. Ответов 2
Метки нет (Все метки)

Почему это не работает (точнее работает но зависает т.к. в set_val_to23() ссылка на указатель val передаётся со значением 0:

main():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void set_val_to23(int* &val) {
    *val=23;
}
 
int main() {
    try {
        cml::auto_ptr<int> k=new int(72);
        std::cout<<*k<<std::endl;
        set_val_to23(k.set());
        std::cout<<*k<<std::endl;
    }
    catch(cml::exception err) {
        o("\n");
        o(err.what());
    }
    return 0;
}
auto_ptr:
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
template <typename ptr_type>
class auto_ptr {
    struct ptr_case {
        ptr_type *ptr;
        UINT use_counter;
        ptr_case(ptr_type *in_ptr) :ptr(in_ptr), use_counter(1) {}
        ~ptr_case() { delete ptr; }
    };
public:
    auto_ptr(ptr_type *in_ptr=0);
    ~auto_ptr();
    auto_ptr(const auto_ptr &in_obj);
    auto_ptr & operator =(const auto_ptr &in_obj);
    auto_ptr & operator =(ptr_type *in_ptr);
    ptr_type* &set();   // <<========================= вот эта функция почему она не работает?
    ptr_type * operator ->() const;
    ptr_type & operator *() const;
    operator ptr_type*() const;
    ptr_type* release();
    bool operator ==(const auto_ptr &in_obj) const;
    bool operator !=(const auto_ptr &in_obj) const;
    bool operator ==(const ptr_type *in_ptr) const;
    bool operator !=(const ptr_type *in_ptr) const;
    template <typename _ptr_type> friend
    bool operator==(const _ptr_type *in_ptr, const auto_ptr<_ptr_type> &in_obj);
    template <typename _ptr_type> friend
    bool operator!=(const ptr_type *in_ptr, const auto_ptr<_ptr_type> &in_obj);
private:
    ptr_case *pointer;
};
 
template <typename ptr_type>
ptr_type* &auto_ptr<ptr_type>::set() {
    pointer->ptr=0;
    if(pointer->use_counter==1) delete pointer;
    else pointer->use_counter--;
    pointer=new ptr_case(0);
    return pointer->ptr;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2013, 20:21     При передаче ссылки на указатель программа зависает
Посмотрите здесь:

Зависает программа при вычислении - C++
Здравствуйте. Программа написана на Dev c++. При компиляции происходит зависание программы. Никак не могу понять в чем дело. ...

Программа зависает при очищении памяти - C++
Здраствуйте. Написал программу, вроде работает нормально, только при окончании зависает. Вот код: #include &lt;iostream&gt; #include...

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

Программа зависает при вводе значения b - C++
Помогите пожалуйста. Когда я в прогарамме ввожу значения b, программа &quot;застряла&quot;. #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

Программа зависает при выводе однонаправленного списка - C++
создал однонаправленный список. все компилится, но при попытке вывода - прога зависает уже горит, так как уже создал буффер для хранения...

Передача ссылки на указатель - C++
Доброго времени суток. Столкнулся с проблемой. Мне нужно передать в качестве параметра 2 ссылки на 2 указателя, в функции меняются...

Указатели и ссылки. Имя массива как указатель - C++
7. Дан одномерный массив, состоящий из N целочисленных элементов. 7.1. Ввести массив с клавиатуры. 7.2. Найти минимальный положительный...

Возвращение ссылки на указатель использование её как левостороннего значения - C++
Есть шаблон: //------------------------------------------------------- template&lt;class T&gt; struct ts { private: void* data; ...

Ошибка при передаче структуры - C++
Пишу в тему для начинающих, ибо жестко туплю с данным вопросом. Есть метод: Fuse_Interpretate::clearStruct(PS)//!!!!!!!!!!!! {...

Теряется строка при передаче в функцию - C++
Привет Замучался копать уже. Теряется строка при передаче её в функцию. Код такой: char* Read() { char str = &quot;1 2 3 4&quot;; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.02.2013, 21:25     При передаче ссылки на указатель программа зависает #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
потому что
Цитата Сообщение от popelyuk Посмотреть сообщение
C++
1
pointer->ptr=0;
Цитата Сообщение от popelyuk Посмотреть сообщение
C++
1
pointer=new ptr_case(0);
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
09.02.2013, 21:31  [ТС]     При передаче ссылки на указатель программа зависает #3
точно блин, вот я кретин, вот так вот копировать код из других методов...
Ответ Создать тему
Опции темы

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