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

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

Войти
Регистрация
Восстановить пароль
 
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
#1

Выведение vector-а из функции void*(c++) - C++

18.02.2014, 21:31. Просмотров 325. Ответов 5
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста. Я создаю структуру :
C++
1
2
3
4
5
6
7
8
struct MemoryBlock
    
    {
        size_t offset;
                                                        
        size_t size;
    
    };
далее я создаю вектор, который содержит некоторое кол-во объектов данной структуры :
C++
1
2
3
4
5
6
    vector<MemoryBlock>obj;
    obj.reserve(s);
    for(int i = 0; i<s ; i++){
    
        obj.push_back(MemoryBlock(ob));
}
Далее у меня есть войдовская функция(с указателем)
C++
1
void*func( int s, vector<MemoryBlock>obj, int q)
После чего я в этой функции работаю с вектором и далее мне надо вывести вектор из этой функции и поместить в другую( но не меняя типа функции(т.е используется void*)). Вопрос, как мне это сделать?(чтобы все данные остались целыми)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 21:31     Выведение vector-а из функции void*(c++)
Посмотрите здесь:

C++ Функции типа void
корректен ли код void f (struct x *this);? (объявление функции) C++
Аналог break для функции типа void C++
Прерывание работы рекурсионной функции типа void C++
Создайте класс StringVector, производный от vector<void*> C++
Изменение значение аргумента в void-функции C++
Что делает return в функции void? C++
C++ В чем особенность функции типа void от других типов?
Как вводить функции типа void C++
C++ Для чего нужны функции void, не возращающие никаких значений?
C++ Табулирование функции и выведение результата в таблице.Форматный вывод данных
C++ Дважды вычислить значение выражения, используя функции возвращающие void и не void

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
18.02.2014, 21:42     Выведение vector-а из функции void*(c++) #2
C++
1
return new vector<MemoryBlock>(obj);
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
18.02.2014, 22:06  [ТС]     Выведение vector-а из функции void*(c++) #3
Вот примерно то, что я хотел, т.е в функцию siizee я помещаю тот вектор(структурный) и все равно ничего не получается, в 1 функции я присваиваю каждому эл-ту значения 1, а во 2 функции он их обнуляет, в то время , как я хочу, чтобы он их сохранил, т.е во 2 функции выводил все 1 тоже
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
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <vector>
#include <locale>
#include<iomanip>
using namespace std;
 
struct MemoryBlock
    
    {
        size_t offset;
                                                        
        size_t size;
    
    };
void*func( vector<MemoryBlock>obj){
    for(int i =0; i< 3; i ++){
        obj[i].size=1;
        cout<<obj[i].size<<setw(4);
    }
    cout<<'\n';
    return new vector<MemoryBlock>(obj);
}
void siizee(vector<MemoryBlock>obj){
    cout<<"Size : "<<'\n';
    for(int i =0; i < 3; i++){
        cout<<obj[i].size<<setw(4);
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    vector<MemoryBlock>obj;
    MemoryBlock ob;
    ob.size=0;
    ob.offset=0;
 
    for(int i = 0; i<3 ; i++){
    
        obj.push_back(MemoryBlock(ob));
    }
    func(obj);
    siizee(obj);
    return 0;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
18.02.2014, 22:20     Выведение vector-а из функции void*(c++) #4
Так при чём тут тогда void*, блин? Передавай вектор в функцию по ссылке! А этот дикий void* и return убери!

Добавлено через 2 минуты
C++
1
void func(vector<MemoryBlock>& obj)
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
18.02.2014, 22:31  [ТС]     Выведение vector-а из функции void*(c++) #5
Да, все получилось, спасибо, если вам не сложно, я хотел бы уточнить, т.е когда я передал vector по ссылке, то он из функции напрямую в структуру данные забивал?
aLarman
640 / 561 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
19.02.2014, 11:11     Выведение vector-а из функции void*(c++) #6
Цитата Сообщение от Sshh Посмотреть сообщение
то он из функции напрямую в структуру данные забивал?
то аргумент ф-ции не копировался, и если проводились изменения obj внутри ф-ции то они производились и в параметру который Вы передали(vector<MemoryBlock>& obj)в эту -фцию
Yandex
Объявления
19.02.2014, 11:11     Выведение vector-а из функции void*(c++)
Ответ Создать тему
Опции темы

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