Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.80
Zeka13
4 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
#1

Динамический массив как глобальная переменная - C++

22.03.2012, 14:35. Просмотров 5655. Ответов 35
Метки нет (Все метки)

Доброго времени суток, даже с google никак не смогу разобраться со следующей задачей:
Хочу объявить матрицу(matrix допустим) глобальной переменной в классе, её размерность x,y тоже глобальные переменные этого класса, которые задаются через слот(функцию) этого класса, тобишь при компиляции размерность массива matrix ещё не известна.

Как можно объявить matrix глобальным?

Заранее огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 14:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамический массив как глобальная переменная (C++):

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз
Исходники: /* main.cpp */ #include "hider.h" int main(void) { return 0;...

Глобальная переменная(не пойму как точно сделать)
Привет.. Делаю менюшку... Ну как в .... Блокноте "Файл, Правка, Справка". Меню...

Глобальная переменная
#include "stdafx.h" #include "locale" #include "iostream" #include "conio.h"...

Глобальная переменная
Надо сделать глобальную переменную которая будет видна во всех файлах .cpp ...

Глобальная переменная
Никогда с таким не сталкивался... В общем: Надо обьявить глобальный масив в...

Глобальная переменная
Есть двумерный символьный массив ClusterBuf объявленный глобально. В него,в...

35
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 14:39 #2
что вы подрузумиваете под

Цитата Сообщение от Zeka13 Посмотреть сообщение
глобальной переменной в классе, её размерность x,y тоже глобальные переменные этого класса
0
Zeka13
4 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 14:44  [ТС] #3
matrix должна быть глобальной матрицей класса MyClass
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 14:50 #4
Zeka13, public + static?
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 14:51 #5
Цитата Сообщение от Zeka13 Посмотреть сообщение
matrix должна быть глобальной матрицей класса MyClass
может вы это имеете ввиду!)
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
#include <iostream>
 
using namespace std;
 
class myclass
{
    int x, y;
public:
    myclass();
    myclass(int i, int j)
    {
        i = x; j = y;
        int **matr = new int *[x]; 
        for (int k = 0; i < k; ++k) 
            matr[k] = new int [y];
    } 
 
 
};
 
int main()
{ 
    int x, y;
    cout << "Задайте размеры матрицы - ";
    cin >> x >> y;
    myclass ob(x,y);
 
    return 0;
}
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 15:10 #6
Infinity3000, не думаю, что ТС просил утечку памяти.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
class Foo
{
public:
    static int a;
};
 
int Foo::a(0);
 
int main()
{
    Foo f1, f2;
    f1.a = 3;
    std::cout << f2.a << std::endl;
}
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 15:12 #7
Цитата Сообщение от soon Посмотреть сообщение
Infinity3000, не думаю, что ТС просил утечку памяти.
ну я как бы догадывался что ТС знает о...

C++
1
2
3
for (i = 0; i < n; i++)
        delete [] matr[i];
    delete [] matr;
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 15:13 #8
Infinity3000, дело не в этом. Какой смысл в конструторе выделять память, и в нем же высвобождать? Не в общем, а конкретно в вашем примере.
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 15:17 #9
Цитата Сообщение от soon Посмотреть сообщение
конструторе выделять память, и в нем же высвобождать?
а кто говорил что память будет освобождаться в конструкторе!?? для это можно использовать деструктор к примеру ну или отдельную функцию!

и ТС как бы в теме указал

Цитата Сообщение от Zeka13 Посмотреть сообщение
динамический массив
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 15:21 #10
Infinity3000, ничего, что переменная matr существует только в конструкторе? Двумя сообщениями выше я тонко намекал на это.
1
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
22.03.2012, 15:27 #11
Цитата Сообщение от Zeka13 Посмотреть сообщение
Хочу объявить матрицу(matrix допустим) глобальной переменной в классе
Цитата Сообщение от Zeka13 Посмотреть сообщение
matrix должна быть глобальной матрицей класса MyClass
давайте уж поаккуратнее скажите, что нужно. первое - несуразица, в то время, как второе - вполне возможно(если я правильно понимаю вас)
0
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 15:42 #12
Я предложил как пример, как понял просьбу ТС!

Да и в Вашем примере не вижу динамического массива



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
#include <iostream>
 
using namespace std;
 
int **mass = 0; 
 
class myclass
{
    int x, y;
    
public:
    myclass(){};
    ~myclass(){};
 
    int **Matrix(int n, int m) //описания функции динамического выделения памяти под матрицу
    {
        int **matr = new int *[n]; 
            for (int i = 0; i < n; ++i) 
                matr[i] = new int [m];     
        return matr; //возвращаем массив
    }
    
    void release(int n)
    {
        // высвобождение динамической памяти
        for (int i = 0; i < n; i++)
            delete [] mass[i];
        delete [] mass;
    }
};
 
 
int main()
{ 
    int x, y;
    cout << "Задайте размеры матрицы - ";
    cin >> x >> y;
    
    myclass ob;
 
    mass = ob.Matrix(x, y); //вызываем функцию которая выделяет память под динамический массив
    
    ob.release(x);// высвобождение динамической памяти
 
    return 0;
}
1
Zeka13
4 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 15:49  [ТС] #13
я немного запутался, но Infinity3000 кажется точно меня понял, скоро опробую!

Добавлено через 33 секунды
только вот что такое n и m?
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 15:49 #14
Infinity3000, я лишь показал возможное использование "глобальной переменной в классе". Все остальное на совести ТС.
Поменьше негатива. Я не ставил себе цель оскорбить вас, я лишь указал вам на ошибки. Выпейте чаю, съешьте булочек, успокойтесь.
За сим флуд прекращаю.

upd.
Вы меня не капли не оскорбили! спасибо за указанные не точности! конструктивную критику приветствую!
Меня смутили ваши восклицательные знаки после каждого предложения.
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 15:52 #15
Цитата Сообщение от Zeka13 Посмотреть сообщение
только вот что такое n и m?
размер матрицы! мажешь заменить на x, y

Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
Infinity3000, я лишь показал возможное использование "глобальной переменной в классе". Все остальное на совести ТС.
Поменьше негатива. Я не ставил себе цель оскорбить вас, я лишь указал вам на ошибки. Выпейте чаю, съешьте булочек, успокойтесь.
За сим флуд прекращаю.
Вы меня не капли не оскорбили! спасибо за указанные не точности! конструктивную критику приветствую!
0
Zeka13
4 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 17:22  [ТС] #16
../plot3.1/maincount.cpp:25:27: ошибка: некорректные типы «<unresolved overloaded function type>[int]» для индекса массива

И так везде, где работаю с массивом, вот полный код
нужный мне для работы массив - a(бывший matrix)
values.h
http://paste.ubuntu.com/895063/
values.cpp
http://paste.ubuntu.com/895065/
maincount.cpp
http://paste.ubuntu.com/895072/
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 17:56 #17
Я бы посоветовал вам выложить весь проект и написать само задание.
1
Zeka13
4 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 18:00  [ТС] #18
сейчас смастерю минипроект
0
Zeka13
4 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 18:09  [ТС] #19
вот проект Qt, там понятно, что я хочу
0
Вложения
Тип файла: zip miniplot.zip (4.4 Кб, 9 просмотров)
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 18:24 #20
Zeka13, a - функция, а вы как с массивом работаете. Задание скажите, так проще будет. Глобальный указатель на указатель, память под который выделяется в классе, x и y не инициализированы... Ужас.
1
22.03.2012, 18:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2012, 18:24
Привет! Вот еще темы с решениями:

Глобальная переменная локальной видимости
Я где-то читал, что если объявить переменную вне функций, а затем определить ее...

Глобальная переменная из другой dll
Имеется сторонняя dll без исходников. Мне нужно в своей программе получить...

Глобальная переменная не читается в новом потоке
подскажите пожалуйста, у меня есть помимо главного еще 2 потока и есть...

Не определяется глобальная переменная внутри функции
Доброго времени суток! Передо мной стоит задача: Задано множество точек М в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru