Wpis z mikrobloga

#programowanie #cpp Mirki, potrzebuję pomocy. Wyskakuje mi błąd :"ISO C++ forbids comparison between pointer and integer" w kodzie (podaję tylko istotny fragment):

int main(int argc, char * argv[])

{

if(argv[2] == '+') Kalk.dodaj(); //error

else if(argv[2] == '-') Kalk.odejmij(); //error

else if(argv[2] == '*') Kalk.pomnoz(); //error

}

ja wiem na czym ten błąd polega, ale w googlach odnośnie tego errora rozwiązania dotyczą porównywania z const char, a u mnie strcmp nie działa. Jak mogę rozwiązać ten problem?
  • 21
@p3sman: tak.

musisz zrobić tak jak napisałem, czyli jak doprecyzował @NiecoCiekawszyNick ogólnie argv[x] to jest jakiś ciąg znaków, to że podajesz jeden nie zmienia tego, czyli argv[x] możesz przypisać do char *argument i wtedy żeby dostać pierwszy znak robisz *argument albo argument[0] czyli jeśli chcesz sprawdzić co tam jest musisz w swoim kodzie napisać argv[2][0] albo *argv[2]
@mojave @badasq: @NiecoCiekawszyNick: program skompilował się bez problemów, ale przy próbie uruchomienia nie chce ruszyć i zamyka mi go

Wklejam cały kod:

#include

#include

using namespace std;

class Kalkulator {

private:

int Argument1;

int Argument2;

int Wynik;

char Operacja;

public:

void ustawargument1 (int a);

void ustaw
argument2 (int b);

void dodaj();

void odejmij();

void pomnoz();

void podziel();

int podajwynik();

};

void Kalkulator::ustaw
argument1 (int a)

{

Argument1 =
@p3sman: u mnie działa xD

tylko mnożenie mi się wywala ale mam jakieś przyćmienie umysłowe, bo nie mogę znaleźć przyczyny tego wywalenia.

znalazłem - program działa, po prostu * trzeba eskejpować w wierszu poleceń \*
@badasq: czytałem, że ludzie mają takie problemy na systemach 64-bitowych. Sprawdzę więc jutro sobie na uczelni. Jak byś znalazł przyczynę błędu z mnożeniem to będę wdzięczny ;)
@p3sman: nie ma błędu w mnożeniu, problemem był wiersz poleceń, gdzie * to uzupełnienie argumentów i trzeba wpisywać \*

odpal może cmd i z cmd odpal binarkę programu z odpowiednimi argumentami. System mam 64bitowy i wszystko pięknie działa.