Проблема с объявлением динамического массива в классе

Тема в разделе "MS Visual C++", создана пользователем 4xter, 12 дек 2009.

Статус темы:
Закрыта.
  1. 4xter

    4xter Гость

    Возникла проблема при работе с динамическим массивом в классе. Ранее когда я просто через константу задавал размер массива, то всё ок работало. Теперь хочется сделать чтобы размер задавался пользователем. Вообще задачка следующая: перегрузить операцию > при работе с массивами. Я сделал её таким образом что содержимое массива а просто копировалось в b операцией a>b. Суть не в этом. НЕ МОГУ МАССИВЫ САМИ ПОЛУЧИТЬ. В результате мне выводит пустые ячейки памяти.
    Вот мой код:
    <!--shcode--><pre><code class='код'>#include
    <iostream>
    using namespace std;
    //int const Size =5; // размер масива

    class Masiv{
    //private :
    //int size1;

    public:
    int Size1;
    int M[];
    Masiv() {};
    ~Masiv(){};
    void SetI(int Data,int i);
    int GetI(int i){return M;}
    int getSize(int Size);
    Masiv operator>(Masiv &);

    };
    int Masiv::getSize(int Size)
    {
    Size1=Size;
    return Size1;
    }
    void Masiv::SetI(int Data,int i){
    M=Data;

    }

    Masiv Masiv::eek:perator>(Masiv &V){
    // Masiv B;
    for (int i=0;i<Size; i++)

    V.SetI(GetI(i),i);

    return V;

    }
    void viev(Masiv A){
    for (int i=0;i<Size;i++)
    cout << i<<'\t'<< A.GetI(i)<<endl;
    }

    int main ()

    {
    Masiv D,C,G;
    int el=0;
    cout<<"Vvedite elementy massiva\n";
    for (int i=0;i<Size;i++)
    {
    // cin>>el;
    D.SetI(i,i);}
    viev(D);
    D>C;
    cout<<"NewMass\n";
    viev(C);


    return 0;

    }[/CODE]



    Помогите разобраться. Заранее спасибо. Делается всё в MS Visual C++
     
  2. Ambroyz

    Ambroyz Гость

    в описании массива используйте vector<int> M,
    в операциях добавления M.push_down(Data) //вроде так :what?:
    будет динамически расширяемый массив, а так как объявили вы, странно что вообще собралось, поидее безразмерные определения массивов могут быть только при инициализации их при объявлении
     
  3. Odin_KG

    Odin_KG Гость

    В коде, по-моему, вообще нет никакой деятельности по изменению размера массива. Если вы не делаете через шаболы типа vector, то нужно создавать и расширять массив ручками, т.е. при добавлении элементов:
    1) Создать новый массив нужной длины (через new)
    2) Скопировать текущий массив в новый
    3) Удалить старый массив (delete []M;)
    4) M=указатель на новый массив

    Не знаю, можно ли писать так:
    int M[];
    обычно пишут:
    int* M;
     
  4. vova25

    vova25 New Member

    Регистрация:
    11 дек 2008
    Сообщения:
    1
    Симпатии:
    0
    по-моему нельзя объявлять безразмерный массив.
    это не должно собираться.
     
  5. zeus

    zeus Гость

    Pardon :) а что делает странная функция?
    int Masiv::getSize(int Size)
     
Загрузка...
Похожие Темы - Проблема объявлением динамического
  1. c0de3r
    Ответов:
    5
    Просмотров:
    119
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    133
  3. SoulPaladin
    Ответов:
    3
    Просмотров:
    122
  4. Artael
    Ответов:
    1
    Просмотров:
    109
  5. ENSLER
    Ответов:
    0
    Просмотров:
    102
Статус темы:
Закрыта.

Поделиться этой страницей