• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ przekazanie tablicy dynamicznej do funkcji w klasie dziedziczącej

Object Storage Arubacloud
0 głosów
1,092 wizyt
pytanie zadane 19 kwietnia 2016 w C i C++ przez Slav83 Nowicjusz (210 p.)

Witam,

Nurtuje mnie pewne zagadnienie, tj. przerabiam program, który sortuje tablice dynamiczną wypełnioną liczbami int z funkcji rand() no i zlicza czasy sortowan z clock_t...

Chciałbym żeby kopia tej tablicy znalazła się w drugiej klasie - tj. tej która dziedziczy z klasy pierwszej gdzie ta tablica jest zadeklarowana i zainicjowana.

W jaki sposób móglbym przekazać taką wartość ?
Lub z jakiego mechanizmu korzystać ?

Może trochę linii kodu:

class 1
{
public:
ctor(); // pusty
void arrayOps();
void sorting(int *arr, int n)
dctor();  //pusty
protected:
int elements;
... i inne ... 
}

void arrayOps(){
    std::srand(std::time(NULL));
    int *array1;
    int *copyarray1;
    std::cout << "How many elements inside array: " << std::endl;
    std::cin >> elements;
    array1 = new int [elements];
for (int i=0; i<elements; i++){
        array1[i] = (std::rand()%1000)+1;
    }
    //copy elements of array1 to array2
    for (int i=0; i< elements; i++){
        copyarray1[i] = array1[elements];
}

chcialbym żeby tablica copyarray[elements] z tej funkcji byla  dostepna w klasie drugiej i zeby funkcje z klasy drugiej mogly z niej korzystac.

Co powienienem poprawic ewentualnie lub zmienic ?

Z góry dzieki i pozdrawiam (:

1 odpowiedź

+1 głos
odpowiedź 19 kwietnia 2016 przez achilles147 Dyskutant (9,580 p.)
edycja 20 kwietnia 2016 przez achilles147
Nie wiem jaka jest zależność pomiędzy twoimi klasami. Kiedy chcesz stworzyć obiekt drugiej klasy??, rozwiń trochę problem, bo za mało informacji podałeś. Nie można przekazywać informacji pomiędzy klasami ( bo klasa to taki szablon lub inaczej mówiąc typ). Można natomiast przekazywać informacje pomiędzy obiektami. Więc pytanie pierwsze brzmi czy chcesz przekazać tą tablicę pomiędzy 2 obiektami ? ( jeden typu class 1 a drugi jakiegoś innego).
komentarz 19 kwietnia 2016 przez Slav83 Nowicjusz (210 p.)

No właśnie to jest istota problemu tzn.

Mam klasę nr 2 ustawiona na dziedziczenie z public a wszystkie deklaracje i alokacja pamieci dla tablic jest w funkcji która jest public w klasie 1szej:

class Array2Class: public Array1Class
{
public:
    
private:
    
};

Chcialbym uzyskac w klasie 2 giej kopie tej tablicy.

W mainie mam tylko taki obiekt :

int main()
{
Array1Class array1ClassAccessObject;
array1ClassAccessObject.array1OperationsFunction();
}

 

komentarz 20 kwietnia 2016 przez achilles147 Dyskutant (9,580 p.)
no ale przecież w mainie tworzysz obiekt typy Array1Class. Czy czasem nie chodzi Ci o to żeby w obiekcie typu Array2Class mieć tablice która deklarujesz i alokujesz w Array1Class?. Z tego co ja zrozumiałem te klasy po sobie dziedziczą, więc na dobrą sprawę w klasie Array2Class masz dostęp do publicznych składowych klasy Array1Class.
komentarz 20 kwietnia 2016 przez Slav83 Nowicjusz (210 p.)

cześć,

No właśnie nie stworzyłem jeszcze obiektów do drugiej klasy. Myślałem, że zabiorę się za funkcje ( metody ) które będą klasie drugiej:

 

class Array2OpsClass: public Array1OpsClass
{
public:
    Array2OpsClass(void);  // konstruktor -- pusty
    void Array2OperationsFunction(); 
    void QuickSortFunction(int *arr, int left, int right);
    ~Array2OpsClass(void);
private:
    double quickSortCpuTime;
};

void Array2OpsClass::Array2OperationsFunction(){
    
}

Ta funkcja u góry -- umyśliłem sobie że będzie zawierała copyarray1[elements] z klasy pierwszej a następnie wykonywała sobie funkcje

void QuickSortFunction(int *arr, int left, int right);

w oparciu o właśnie copyarray1[elements];

nawet jak zmieniam dziedziczenie klasy drugiej na private czyli:

class Array2OpsClass: private Array1OpsClass
{

}

i w funkcji

    void Array2OperationsFunction()
{
   copyarray1[elements];
}

To dostaje błąd

copyarray1 was not decalred in this scope

copyarray1[elements] is private

error within this context

Podobne pytania

0 głosów
2 odpowiedzi 536 wizyt
pytanie zadane 10 marca 2016 w Java przez piekarnik Użytkownik (720 p.)
0 głosów
0 odpowiedzi 156 wizyt

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...