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

Klasy zagnieżdżone, konstruktor i referencja

Ostatnio zmodyfikowano 2012-09-02 01:19
Autor Wiadomość
Admixior
Temat założony przez niniejszego użytkownika
Klasy zagnieżdżone, konstruktor i referencja
» 2012-08-30 00:10:00
Jak napisać konstruktor? Wydawałoby się proste jednak moja klasa jest skomplikowana więc podam jej urywek...
...w środku niej jest struktura bez nazwy...
C/C++
struct //dane aktualnego zaznaczenia
{
    string tekst_pre,
    tekst_post;
    String txt;
    unsigned int cur_sel;
   
} select;
A więc...
pisząc konstruktor dla klasy nadrzędnej nie mogę się posłużyć w liście inicjalizacyjnej(<-- gdzie w tym słowie jest błąd?) w ten sposób "select.tekst_pre(...)", bo
spodziewano się '(' a nie '.'
.
Więc stwierdziłem że chce napisać dla tej klasy konstruktor, ale klasa się zwie klasa_nadrzedna::<unnamed>.
Czy można zrobić w stylu traktowania select jako nazwy klasy do konstruktora (aczkolwiek byłoby to dziwne bo jak ktoś ma wpisane 2 nazwy?).
Ewentualnie czy w ogóle istnieje taka możliwość lub podobne, zgodne lub nie ze  standardem?
P-63998
DejaVu
» 2012-08-30 01:14:48
W zasadzie to zapis który przedstawiłeś tworzy obiekt o określonej nazwie, a nie klasę/strukturę o określonej nazwie. Ponadto jeżeli dziedziczysz po klasie X to z klasy X możesz wywołać tylko i wyłącznie konstruktor na liście inicjalizacyjnej - nic innego.
P-63999
Admixior
Temat założony przez niniejszego użytkownika
» 2012-08-30 23:56:21
Ups.. Czytałem aż w końcu zorientowałem się że źle napisałem (sry). Chodziło mi o klasę zdefiniowaną w klasie...
I właśnie nie wiem jak zrobić.
P-64128
m4tx
» 2012-08-31 07:41:36
Napisałeś to wszystko tak chaotycznie, że kompletnie się Ciebie nie da zrozumieć.

Chodziło mi o klasę zdefiniowaną w klasie...
Chodzi Ci o coś takiego?
C/C++
class outer
{
    class inner
    {
        /* trololo */
    };
    inner jakisobiekt;
};
To się nested class zwie.
P-64132
Admixior
Temat założony przez niniejszego użytkownika
» 2012-08-31 18:43:18
Tak o to mi chodziło it wygląda mniej więcej tak:
C/C++
class pierwsza
{
    bool click;
    //other var
    struct
    {
        int zmienna;
        //other..
    } nazwa;
    pierwsza()
        : clicked( false )
    { }
};
i chcę zainicjalizować zmienną "zmienna".
(Choćby dlatego że to będzie referencja :p)
P-64177
Mrovqa
» 2012-08-31 18:50:51
C/C++
class pierwsza
{
    bool click;
    //other var
    struct
    {
        int zmienna;
        //other..
    } nazwa;
    pierwsza()
        : clicked( false )
        , nazwa.zmienna( 4 )
    { }
};
To zachowuje się normalnie jak klasa :)
Później by odwołać się zewnątrz do tego:
C/C++
pierwsza naszObj;
naszObj.nazwa.zmienna = xxx;

@down nie ten temat? To jest jakiś odpowiedni? Poza tym nie masz jego gg?? Jak ja mam to dziwne, byś ty go nie miał. Btw może się spotkamy w pon?? :D (pisz->gg)
P-64179
CodeMeister
» 2012-08-31 19:03:40
Nie ten temat, ale Admixior - w Poniedziałek na 8.30 do szkoły, zbiórka jest :)
P-64182
Mrovqa
» 2012-08-31 19:54:46
Przepraszam za błąd wyżej. Nie kompilowałem, stąd mam błąd. Na liście inicjalizacyjnej klasy nadrzędnej dla obiektu klasy zagnieżdżonej musisz wywołać konstruktor :)
C/C++
class pierwsza
{
    bool click;
    //other var
    struct
    {
        int zmienna;
        //other..
    } nazwa;
    pierwsza()
        : clicked( false )
        , nazwa(
    { 4 } ) // tu wywołanie konstruktora
    { }
}

/edit: Jeżeli chcesz coś napisać, to pisz nowy post, a nie edytuj pierwszy.
btw jakoś dziwnie parser interpretuje (wyświetla) ten kod... :)
P-64184
« 1 » 2 3
  Strona 1 z 3 Następna strona