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

Передача массива - C++

Восстановить пароль Регистрация
 
Master05
1 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 124
18.10.2013, 23:26     Передача массива #1
massiv.cpp

C++
1
2
3
4
5
6
7
8
int * peredacha()
{
    int mas[10][10];
    for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                mas[i][j] = j;
        return *mas;
}
widget.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "widget.h"
#include "ui_widget.h"
#include "massiv.h"
#include <stdlib.h>
 
 massiv * arr1;
 int mas2[10][10];
 
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    arr1 = new massiv();
    memcpy( mas2, arr1->peredacha(), sizeof( int ) * 100 );
}
 
Widget::~Widget()
{
    delete ui;
}
Пишет, ошибка на неразрешенный внешний символ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kniferko
35 / 35 / 1
Регистрация: 02.03.2012
Сообщений: 117
19.10.2013, 00:07     Передача массива #2
Что такое maasiv? Где он описан?

Функция predacha возвращает указатель на локально инициализированный массив? Не очистятся ли данные по завершению функции?

Уж тогда лучше как-нибудь так:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void peredacha(int **ptr)
{
    for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                ptr[i][j] = j;
}
 
...
 
mas[10][10]
 
...
 
peredacha(mas);
Master05
1 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 124
19.10.2013, 21:54  [ТС]     Передача массива #3
Цитата Сообщение от kniferko Посмотреть сообщение
Что такое maasiv? Где он описан?

Функция predacha возвращает указатель на локально инициализированный массив? Не очистятся ли данные по завершению функции?

Уж тогда лучше как-нибудь так:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void peredacha(int **ptr)
{
    for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                ptr[i][j] = j;
}
 
...
 
mas[10][10]
 
...
 
peredacha(mas);
massiv.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef MASSIV_H
#define MASSIV_H
 
class massiv
{
public:
    int mas[10][10];
    massiv();
    int* peredacha(int mas[10][10]);
    
 
};
 
#endif // MASSIV_H
massiv.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "massiv.h"
 
massiv::massiv()
{
}
int* massiv::peredacha(int mas[10][10])
{
    
    for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                mas[i][j] = j;
    return *mas;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "massiv.h"
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    int mas2[10][10];
    
    massiv * m = new massiv();
        
    memcpy(mas2, m->peredacha(m->mas), sizeof( int ) * 100 );
 
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
            cout << mas2[i][j] << "   ";
        cout << endl;   
    }
    cin.get();
    return 0;
}
В консоли все работает, а стоит перенести этот фрагмент в qt появляется ошибка, "ссылка на неразрешенный внешний символ" в функции peredacha..., поэтому я и создал тему в Qt
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 22:13     Передача массива #4
Цитата Сообщение от Master05 Посмотреть сообщение
а стоит перенести этот фрагмент в qt появляется ошибка,
Значит что-то не так переносите.

Добавлено через 6 минут
Qt в какой среде делаете?
Master05
1 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 124
19.10.2013, 22:17  [ТС]     Передача массива #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Значит что-то не так переносите.

Добавлено через 6 минут
Qt в какой среде делаете?
QWidget
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 22:21     Передача массива #6
Цитата Сообщение от Master05 Посмотреть сообщение
Qt Widget
Это что, среда такая? Компилируете в чём?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 22:38     Передача массива
Еще ссылки по теме:

C++ Передача массива в функцию
C++ Передача двумерного массива
Передача массива по ссылке C++

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

Или воспользуйтесь поиском по форуму:
Master05
1 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 124
19.10.2013, 22:38  [ТС]     Передача массива #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Это что, среда такая? Компилируете в чём?
Все, я разобрался, нужно было новый создаваемый класс делать наследуемым от QObject
Yandex
Объявления
19.10.2013, 22:38     Передача массива
Ответ Создать тему
Опции темы

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