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

Разименование указателя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сохранение переменной в файл http://www.cyberforum.ru/cpp-beginners/thread640363.html
Есть глобальная переменная static char Pass; Есть поток, в цикле которого эта переменная меняется раз в примерно 0.5 секунды. В мейне цикл ждёт нажатия еска для сохранения этой переменной в файл и выключения программы. Помогите с проблемой при сохранении! Если поток закомментировать а переменной что-нибудь присвоить сохраняет нормально. Если поток работает, переменная меняется, то в мейне её...
C++ Получение памяти под структуру Не могу понять, почему нельзя привести void* в мою структуру: struct func { double k,x; }; struct func* getArg(struct point &p1,struct point &p2) { struct func* functions_attr = malloc(sizeof(struct func)); functions_attr->k = (p1.y-p2.y)/(p1.x-p2.x); functions_attr->b = p1->y-k*p1->x; http://www.cyberforum.ru/cpp-beginners/thread640344.html
C++ Трудности с организацией классовой иерархии
Класс A использует данные класса B для выполнения своих методов, которые вызывает класс B. Что не хватает этому коду для того чтобы он закомпилировался? #include <iostream> class B; class A { B* v; public:
Вычисление ряда C++
Всем доброго время суток. Нужно написать программу для вычисления ряда: 1 + 2*x + 3*{x}^{2} + 4*{x}^{3} + ... = \sum_{n=0}^{infinity}(n + 1)*{x}^{n}=\frac{1}{{(1-x)}^{2}} Аргумент x (x по модулю меньше 1) вводится с клавиатуры пользователем, а граница ряда определяется как константа. Вот код, но он не совсем правильный, не могу понять в чем ошибка: #include <cstdio> #include <cstdlib>...
C++ Заполнить контейнер случайными числами http://www.cyberforum.ru/cpp-beginners/thread640340.html
ТОлько начинаю свой тернистый путь, многие с этого начинали так что не надо судить строго мой нубовский код! идея такова что бы контейнер заполняется числами до 1000 они там перемешиваются и выводится число под номером 1, проблема в том что при каждом запуске программа выдаёт одно и тоже число, мне кажется, что после вывода числа нужно как бы очистить контейнер от тех 1000 перемешаных чисел, что...
C++ Решение задач C++ Р. Лафоре Всем привет. нужна помощь в в решении 11 задачи 2 главы книги. Уже все перепробовал, не могу найти друго решения как поставить подчеркивания после первой строки. В аттаче задание и мой солюшен, немного глупый, но другого я не придумал. все попытки сделать это более красиво ни к чему не привели. Пожалуйста, помогите в решении данной задачи, заранее благодарен. подробнее

Показать сообщение отдельно
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632

Разименование указателя - C++

21.08.2012, 05:40. Просмотров 1384. Ответов 25
Метки (Все метки)

Есть функция get_parametr,котрая в зависимости от переданного параметра,извлекает информацию,сохраняет в объекте string,адрес которого присваивается указателю на void,передаваемого по ссылке.После я передаю парметр и указатель функции,которая разыменовывает указатель и тут всплывает ошибка:необработанное исключение в ....
Указатель в процессе работы программы не равен нулю,то есть указывает на данные,возможно ошибка в том,что указателю присваивается адрес на локальную перменную фунции,которая уничтожается при её завершении и поэтому у меня есть указатель на ничто,но может я ошбаюсь
get_parametr
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
48
49
50
51
52
53
54
void get_parametr(vector<string> words, size_t position,
    short number, short parametr, void *&data)
{
    switch(number)
    {
    //----------------------------------------------------------
    case 0:
        {
            if(parametr)
            {
                ostringstream phrase;
 
                for(size_t i = position;i < words.size();i++)
                    phrase << words.at(i);
 
                data = &(phrase.str());
 
                return;
            }
            else
            {
                string digit = words.at(position + 1);
                data = &digit;
 
                return;
            }
        }
    //----------------------------------------------------------
 
    //----------------------------------------------------------
    case 1:
        {
            if(!parametr)
            {
                string village = words.at(position);
 
                data = &village;
 
                return;
            }
            else
            {
                string town = words.at(position);
 
                data = &town;
 
                return;
            }
        }
    //----------------------------------------------------------
    }
 
    return;
}

одна из функций,которые используют указатель
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Action::Print(short _param,void *_data)
{
    switch(_param)
    {
    case -1:
        {cout << "Print :" << *((string *)_data) << endl;   return;}
 
    case 0:
        {cout << "Print digit:" << *((int *)_data) << endl; return;}
 
    case 1:
        {cout << "Print phrase:" << *((string *)_data) << endl; return;}
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru