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

[C++, obiektowość] Tworzenie obiektu z oryginalnym konstruktorem w klasie

Ostatnio zmodyfikowano 2015-04-05 12:32
Autor Wiadomość
Winner_Of_Death
Temat założony przez niniejszego użytkownika
[C++, obiektowość] Tworzenie obiektu z oryginalnym konstruktorem w klasie
» 2015-04-04 18:34:45
Witam.
Jak utworzyć obiekt w klasie, który do wywołania konstruktora musi dostać argument ?
Przykład:
C/C++
class klasa_A
{
public:
    int zmienna;
   
    klasa_A( int n )
    {
        zmienna = n;
    }
};

class klasa_B
{
    klasa_A obiekt( 1 ); //Blad - Jak utworzyc obiekt, ktory do konstruktora musi miec argument/y ?
};
P-130130
NopeDotAvi
» 2015-04-04 18:44:43
Czy tylko ja nie rozumiem pytania? Przecież zrobiłeś konstruktor, który potrzebuje argumentu.
P-130131
notabigthreat
» 2015-04-04 18:46:19
C/C++
class klasa_A
{
public:
    int zmienna;
   
    klasa_A( int n )
    {
        zmienna = n;
    }
};

class klasa_B
{
    klasa_A obiekt; //Tu bez tej jedynki
    klasa_A obiekt2;
    klasa_A obiekt3;
public:
    klasa_B( int a )
        : obiekt( 1 ) // dwukropek
         , obiekt2( 2 ) // przecinek
         , obiekt3( a ) // przecinek
    {
        //tresc konstruktora, moze byc nawet pusta
    }
};

Inni piszą tak:
C/C++
: obiekt( 1 ),
obiekt2( 2 ),
obiekt3( a )
@EDIT:
W ten sposób możesz także ustawiać zwykłe zmienne (int'y, float'y...).
P-130133
Winner_Of_Death
Temat założony przez niniejszego użytkownika
» 2015-04-04 18:50:45
@NopeDotAvi:
Zrobiłem, lecz nie wiedziałem jak go wywołać.

@up:
Dzięki wielkie, o to chodziło.


Chciałbym również życzyć wszystkim Wesołych Świąt !

@EDIT:
Dopytam.
Ta sama sytuacja, tylko zamiast jednego obiektu, tworzę tablicę obiektów.
Jak wtedy wywołać konstruktor ?
Przykład:

C/C++
class klasa_A
{
public:
    int zmienna;
   
    klasa_A( int n )
    {
        zmienna = n;
    }
};

class klasa_B
{
    klasa_A obiekt[ 2 ]; //Dwuelementowa tablica obiektów
   
public:
    klasa_B()
        : obiekt[ 0 ]( 1 ) // blad - jak to zapisac ?
         , obiekt[ 1 ]( 1 ) //blad
    {
        //tresc konstruktora
    }
};
P-130134
SeaMonster131
» 2015-04-04 19:20:48
Możesz spróbować w taki sposób, jak normalną tablicę:
C/C++
klasa_B()
    : obiekt
{( 1 ),( 2 ) }
P-130135
Fireho
» 2015-04-04 19:20:53
@SeaMonster131 Ten sposób nie zadziała przy konstruktorach, które przyjmują więcej niż 1 argument. Najlepiej zamiast tego zamienić klasyczną tablicę na
std::vector
 i użyć metody
push_back
/
emplace_back
.
P-130136
notabigthreat
» 2015-04-04 19:26:01
P-130137
Winner_Of_Death
Temat założony przez niniejszego użytkownika
» 2015-04-04 19:48:03
W takim razie pomimo tego, iż wiem ile obiektów będzie potrzebnych, użyję vectora.
Dziękuję wszystkim za pomoc !
P-130140
« 1 » 2
  Strona 1 z 2 Następna strona