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

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

Восстановить пароль Регистрация
 
Sshh
1 / 1 / 0
Регистрация: 17.02.2014
Сообщений: 9
18.02.2014, 21:31     Выведение vector-а из функции void*(c++) #1
Здравствуйте, помогите пожалуйста. Я создаю структуру :
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*)). Вопрос, как мне это сделать?(чтобы все данные остались целыми)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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
636 / 557 / 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++)
Ответ Создать тему
Опции темы

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