узлы класса массива не работают - PullRequest
0 голосов
/ 09 октября 2011

у меня следующий код, который ничего мне не показывает

#include <iostream>
using namespace std;
class Array{

private :
     long *a;
public:
       Array(int size){
        a=new  long[size];


       }
       void set(int index,long  value){
        a[index]=value;

       }
       long get(int index){
        if (index<0 || index>(sizeof(a)/sizeof(long)))    {

         exit(1);
        }
         return a[index];
       }







} ;
int main(){

      Array* arr=new Array(100);
             int number=0;
             int j=0;
             arr->set(0,11);
             arr->set(1,12);
             arr->set(2,14);
             arr->set(3,15);
             arr->set(4,20);
             arr->set(5,34);
             arr->set(6,50);
             arr->set(7,10);
             arr->set(8,80);
             arr->set(9,100);
             number=10;
             int search=80;
              for (int i=0;i<number;i++){
                  if (arr->get(i)==search){
                   cout<<"search found "<<endl;
                   break;
                  }



                  }


                    //cout<<arr->get(8)<<endl;  

 return 0;
}

нет никаких ошибок или ошибок, просто нет вывода, что не так? Пожалуйста, помогите мне ОБНОВЛЕНО: почему следующий код

int k=10;//delete it;
                     for (int j=0;j<number;j++)
                         if (arr->get(j)==k)
                              break;
                          for (k=j;k<number-1;k++)
                              arr->set(k,arr->get(k+1));
                    number--;

                     for (int j=0;j<number;j++)
                         cout<<arr->get(j)<<"  ";

удаляет 11, а не 10 - старая проблема исправлена, введите новую переменную для подсчета размера массива, но эта проблема у меня сейчас

Ответы [ 2 ]

3 голосов
/ 09 октября 2011

Проблема в том, что вы предполагаете, что sizeof(a) дает вам объем памяти, на который указывает a.Это не так.Это дает вам размер указателя.У вас есть аргумент size в конструкторе - просто сохраните его в переменной-члене и используйте позже для проверки границ.

2 голосов
/ 09 октября 2011
index>(sizeof(a)/sizeof(long))

Это неправильно. Вы берете размер указателя, а не размер вашего массива ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...