Klasa i jej zmienne

0

Witam mam taki kod klasy:


class menu{
private: 

public:
    int *c_menu;
    char i_menu[100];
    void addmenu(char *str[]);

};

void menu::addmenu(char *str[]){

    this->i_menu[c_menu]='aa';

    this->c_menu = this->c_menu + 1;
}

Jako iż przerzucam się z php na c++ to mam teraz z pewną rzeczą trudność ,a mianowicie z tym fragmentem

this->i_menu[c_menu]='aa';

chciałbym tam wcisnąć zmienną c_menu ale kurcze wyskakuje błąd i nie wiem w jaki sposób to zrobić. Próbowałem już this->c_menu oraz menu::c_menu - bez skutku.

Pozdrawiam i liczę na szybką odpowiedź :)

0

przeczytaj ze zrozumieniem komunikat błędu kompilatora :/ a jeśli nie rozumiesz go, to go wklej do google. a jeśli jakimś cudem google nie pomogło, to wklej go na forum. nie każdy ma kompilator i nie każdemu chce się uruchamiać ten kod, żeby sprawdzić komunikat.
nie znam c++, ale chyba widać, że i_menu to tablica char, a Ty chcesz tam wepchnąć na jedno miejsce dwa znaki. to se ne da.

0

Zamień

int *c_menu;
char i_menu[100];

na

int c_menu;
std::string i_menu[100];

I oczywiście

c_menu = 0;

w konstruktorze.
A najlepiej wyrzuć ten kod, bo to lekkie WTF.

0

W C++ w ' ' trzyma się tylko jeden znak. Do literałów znakowych stosuje się " ". Zapomnij o char *, naucz się std::string - to znacząco ułatwi Ci przejście z PHP do C++. std::vector też się naucz. Nie poprzedzaj składowych klasy this->, to jest potrzebne tylko w wyjątkowych przypadkach.

0

do tego c_menu jest wskaźnikiem, nie mam pojęcia po jaką cholerę. Musisz zacząć od podstaw, bo bez tego nie ruszysz(szczególnie patrząc na to jak próbowałeś ten problem rozwiązać).

0
class menu
{

public:
        int c_menu;
        std::string i_menu[100];
        void addmenu(std::string napis);
        menu::menu();

};

menu::menu(){
    c_menu= 0;
}

void menu::addmenu(std::string napis){

        i_menu[c_menu]=napis;

        c_menu = c_menu + 1;
}

no dobra mam coś takiego i jest okej - niby.
Niby dlatego że gdy usiłuje to zaincludować gdzieś do jakiegoś pliku to wyskakują takie błędy:

menu.obj : error LNK2005: "public: __thiscall menu::menu(void)" ([email protected]@[email protected]) already defined in main.obj
1>menu.obj : error LNK2005: "public: void __thiscall menu::addmenu(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) already defined in main.obj

Od razu mówię nie ma takiej opcji że one są 'already defined' bo nawet wzmianki o nich nie ma ,tylko includuje plik z tą klasą do innego.

0

Strażnicy są?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0