Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.80
Zeka13
-33 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
#1

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

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

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

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

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

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

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

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

Глобальная переменная - C++
#include "stdafx.h" #include "locale" #include "iostream" #include "conio.h" using namespace::std; int count = -1; void swap();...

Глобальная переменная - C++
Никогда с таким не сталкивался... В общем: Надо обьявить глобальный масив в одной функции, но чтобы его видели все другие функции. Вне...

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

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

Цитата Сообщение от Zeka13 Посмотреть сообщение
глобальной переменной в классе, её размерность x,y тоже глобальные переменные этого класса
0
Zeka13
-33 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 14:44  [ТС] #3
matrix должна быть глобальной матрицей класса MyClass
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 14:50 #4
Zeka13, public + static?
1
Infinity3000
1058 / 577 / 24
Регистрация: 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
2542 / 1307 / 81
Регистрация: 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
1058 / 577 / 24
Регистрация: 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
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 15:13 #8
Infinity3000, дело не в этом. Какой смысл в конструторе выделять память, и в нем же высвобождать? Не в общем, а конкретно в вашем примере.
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 15:17 #9
Цитата Сообщение от soon Посмотреть сообщение
конструторе выделять память, и в нем же высвобождать?
а кто говорил что память будет освобождаться в конструкторе!?? для это можно использовать деструктор к примеру ну или отдельную функцию!

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

Цитата Сообщение от Zeka13 Посмотреть сообщение
динамический массив
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 15:21 #10
Infinity3000, ничего, что переменная matr существует только в конструкторе? Двумя сообщениями выше я тонко намекал на это.
1
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
22.03.2012, 15:27 #11
Цитата Сообщение от Zeka13 Посмотреть сообщение
Хочу объявить матрицу(matrix допустим) глобальной переменной в классе
Цитата Сообщение от Zeka13 Посмотреть сообщение
matrix должна быть глобальной матрицей класса MyClass
давайте уж поаккуратнее скажите, что нужно. первое - несуразица, в то время, как второе - вполне возможно(если я правильно понимаю вас)
0
Infinity3000
1058 / 577 / 24
Регистрация: 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
-33 / 8 / 0
Регистрация: 22.03.2012
Сообщений: 135
22.03.2012, 15:49  [ТС] #13
я немного запутался, но Infinity3000 кажется точно меня понял, скоро опробую!

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

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

Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
Infinity3000, я лишь показал возможное использование "глобальной переменной в классе". Все остальное на совести ТС.
Поменьше негатива. Я не ставил себе цель оскорбить вас, я лишь указал вам на ошибки. Выпейте чаю, съешьте булочек, успокойтесь.
За сим флуд прекращаю.
Вы меня не капли не оскорбили! спасибо за указанные не точности! конструктивную критику приветствую!
0
22.03.2012, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2012, 15:52
Привет! Вот еще темы с ответами:

Глобальная переменная в OpenCL - C++
Всем привет! Кто может подсказать как правильно создать глобальную переменную в OpenCL? unsigned char *globalVariable; __kernel...

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

Глобальная переменная не читается в новом потоке - C++
подскажите пожалуйста, у меня есть помимо главного еще 2 потока и есть глобально объявленный массив, заполняю я его в первом потоке, там же...

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


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

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

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