Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wskaźnik do std::vector

Ostatnio zmodyfikowano 2016-10-06 10:54
Autor Wiadomość
qrchack
Temat założony przez niniejszego użytkownika
wskaźnik do std::vector
» 2016-10-05 15:31:42
Witam serdecznie!

Czy jest możliwe, przekazanie wskaźnika do wektora będącego elementem jednej klasy do innej klasy?

Mam coś takiego:
C/C++
class System
{
    klasa1 * k1;
    klasa2 * k2;
   
    void ustawhaczyk()
    {
        k2->ustawhaczyk( k1->dawajhaczyk() );
       
    }
}

class k1
{
    std::vector < k3 *> TablicaK3;
    //robi rozne ciekawe rzeczyna TablicaK3;
   
    std::vector * dawajhaczyk( void ) { return & TablicaK3; }
}

class k2
{
   
    //robi jeszcze ciekawsze rzeczy
    //ale chcialbym miec dostep do zawartosci TablicyK3 bez koniecznosci przekazywania tego parametrami miedzy klasami
   
    //najlepiej, jakby dzialalo cos w stylu:
    std::vector * < k3 *> haczyknatablice;
   
    void ustawhaczyk( std::vector * haczyk ) { haczyknatablice = haczyk; }
}

Czy coś takiego wogóle jest możliwe?
Pytam ZANIM zacznę przebudowywać kod, czy wogóle jest sens, a jesli nie, to czy można coś w tym stylu zastosować?
P-152272
Gibas11
» 2016-10-05 16:50:16
Możesz tak zrobić, tylko gwiazdkę wstaw po szablonie przy deklaracji.
std::vector < typ > * ptr;
P-152276
mateczek
» 2016-10-05 17:36:19
chya raczej zaleca się obudować klasę k1 w metody dostępu do vectora (piszę chyba bo nie czuję się kompetentny by coś mówić na 100%) oczywiście wszystko zależy od sytuacji
C/C++
#include <iostream>
#include<vector>
using namespace std;
class K1 {
public:
    vector < int > w;
    void odczytaj() {
        for( int a: w ) cout << a << " ";
       
        cout << endl;
    }
};
class K2 {
    vector < int > * w;
public:
    K2( vector < int > * _w ) {
        w = _w;
    }
    void wypelni() {
        for( int i = 0; i < 10; i++ ) w->push_back( i );
       
    }
   
};

int main()
{
    K1 k1;
    K2 k2( & k1.w ); //przekazanie uchwytu np. w konstruktorze
    k2.wypelni();
    k1.odczytaj();
}
P-152277
qrchack
Temat założony przez niniejszego użytkownika
» 2016-10-06 10:54:02
@Gibas11
Dla pewności, czy dobrze rozumiem...

std::vector < k3 *> tablicaK3;
 mogę zostawić jak jest, nie muszę deklarować jako wskaźnik?

wskażnik zwracam dobrze? W sensie, czy ok jest:
std::vector * dawajhaczyk( void );
czy trzeba jednak
std::vector < k3 *> * dawajhaczyk( void );

No bo rozumiem, że w klasie k2 ma być
std: vector < k3 *> * haczyk;

Dobrze rozumiem ? ;)
P-152303
« 1 »
  Strona 1 z 1