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

Функция с указателем на void** не получается вернуть данные? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести с клавиатуры массив X, состоящий из 15 элементов целого типа. Рассчитать элементы массива Y по формуле http://www.cyberforum.ru/cpp-beginners/thread1493941.html
Ввести с клавиатуры массив X, состоящий из 15 элементов целого типа. Рассчитать элементы массива Y по формуле {y}_{i}=cos({{x}_{i}}^{2})+2,97{lg}^{2}{i}^{2}.Сформулировать третий массив из упорядоченных по убыванию значений обоих массивов.
C++ Взаимодействие с браузером Какую библиотеку можно использовать что бы взаимодействовать с браузером,например мне надо что бы программа ввела определенное слово на определенную страницу сайта в нужную строку,или просто нажала на кнопку.И можно ли для этого использовать библиотеку windows.h?Если что пишу на visual c++ и использую библиотеку классов MFC http://www.cyberforum.ru/cpp-beginners/thread1493925.html
Подключение статической lib-библиотеки C++
есть lib sqlite3.lib однако при попытке использовать функции из sqlite3.lib получаю следующее 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) уже определен в libcmt.lib(typinfo.obj) 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info...
C++ Ошибка при определении макроса
Здорова! Есть код: #include <iostream> using std::cout; using std::endl; #include <string> using std::string; #include <afxwin.h>
C++ Ошибки преобразования при передаче указателя на функцию http://www.cyberforum.ru/cpp-beginners/thread1493870.html
Есть функция SQLITE_API int SQLITE_STDCALL sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be evaluated */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /*...
C++ Поменять местами наибольшие элементы в верхней и нижней половинах матрицы (подпрограммы) В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов наибольшего элемента в заданной части матрицы использовать подпрограмму. Для поиска наиб. элементов в верхней и нижней частях матрицы нужно использовать одну и ту же функцию. Функцию я написала. Для верхней части наиб. элемент находится правильно, но для... подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.07.2015, 14:48     Функция с указателем на void** не получается вернуть данные?
Здорова!
Есть код:
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
#include <iostream>
using std::cout;
 
struct IMotion
{
    virtual int& get_val()=0;
};
 
class CObject : public IMotion
{
    int m_val;
public:
    CObject(){m_val=0;}
    int& get_val(){return m_val;}
};
 
void f(void** p)
{
    IMotion* ptr=new CObject();
//  cout <<ptr->get_val()<<"\r\n";
    p=(void**)ptr;
}
 
int main()
{
    IMotion* ptr=nullptr;
 
    f((void**)ptr);
    if(ptr==nullptr) exit(1);
 
    cout <<ptr->get_val()<<"\r\n";
    ptr->get_val()=10;
    cout <<ptr->get_val()<<"\r\n";
 
    return 0;
}
в функции f мы создаем указатель на класс и должны вернуть указатель на базовый класс типо интерфейса, но ничего не получается, это мы должны сделать через указатель на void** в книге так. Но ниче не выходит, в чем проблема?

От в этой функции где то ошибка, потому что получается постоянно пустой указатель
C++
1
2
3
4
5
6
void f(void** p)
{
    IMotion* ptr=new CObject();
//  cout <<ptr->get_val()<<"\r\n";
    p=(void**)ptr;
}
Добавлено через 4 минуты
Короче вывел адреса указателей и получается что в функцию f какой то левый адрес, не такой как в IMotion* ptr; функции main или это void так меняет адрес.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru