error: no match for 'operator<<' in 'std::operator<<
Ostatnio zmodyfikowano 2012-08-26 20:26
Konradex Temat założony przez niniejszego użytkownika |
error: no match for 'operator<<' in 'std::operator<< » 2012-08-26 16:44:00 Witam
Postanowiłem sobie napisać taką prostą gierkę(wersje drugą, tym razem z pomocą klas) w której tworze swoją postać, ma swój lvl, doś, hp itp. I przy tworzeniu statystyk natrafiam na problem.
error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(& std::cout)), ((const char*)"\012Zycie: ")) << Posta.Postac::pokazTwojeHp'|
oraz do tego odsyła mnie do pliku osteam. Kod wygląda następująco:
#include <iostream> #include <windows.h> #include <conio.h> #include <cstdlib> #include <string> #include <ctime> using namespace std; int statystyki(); class Postac { public: Postac( int hp, int dos, int level ); ~Postac(); char pokazNick[]; int pokazTwojeHp() { return twojeHp; } int ustawTwojeHp( int hp ) { twojeHp = hp; } int pokazTwojeMaxHp( int level ); int pokazTwojeDos() { return twojeDos; } int ustawTwojeDos( int dos ) { twojeDos = dos; } int pokazTwojeDosDoLvl() { return twojeDosDoLvl; } int ustawTwojeDosDolvl( int dosDoLvl, int level ); int pokazLevel() { return twojLevel; } int ustawLevel( int level ); int pokazObrazenia() { return twojeObrazenia; } int ustawObrazenia( int obrazenia ) { twojeObrazenia = obrazenia; } int pokazObrone() { return twojaObrona; } int ustawObrone( int obrona ) { twojaObrona = obrona; } private: int twojeHp; int twojeDos; int twojeDosDoLvl; int twojLevel; int twojeObrazenia; int twojaObrona; }; Postac::Postac( int hp, int dos, int level ) { twojeHp = hp; twojeDos = dos; twojLevel = level; } Postac::~Postac() { } int pokazTwojeMaxHp( int level ) { int hp = 150; int hpMax; for( int i; i <= level; i++ ) { hpMax += 10; } return hpMax; } Postac Posta( 150, 0, 1 ); int main() { char mojNick[ 26 ]; cout << "Nick: "; cin.get( mojNick, 25 ); strcpy( Posta.pokazNick, mojNick ); cout << Posta.pokazNick; statystyki(); return 0; } int statystyki() { system( "cls" ); cout << "Nick: " << Posta.pokazNick; cout << "\nZycie: " << Posta.pokazTwojeHp << " \ " << Posta.pokazTwojeMaxHp( Posta.pokazLevel ); cout << "\nDoswiadczenie: " << Posta.pokazTwojeDos << " \ " << Posta.pokazTwojeMaxHp; cout << "\nAtak: " << Posta.pokazObrazenia; cout << "\nObrona: " << Posta.pokazObrone; } |
|
DejaVu |
» 2012-08-26 16:46:15 Znak \ jest znakiem specjalnym. Zapisuje się go jako \\. |
|
Konradex Temat założony przez niniejszego użytkownika |
» 2012-08-26 17:16:39 Z tego co zrozumiałem z twojego postu jak mam np. cout << "\nAtak: " << Posta.pokazObrazenia; to zamiast '\n' mam zrobic '\\n' Jak tak to po tej zmianie również nie działa. |
|
m4tx |
» 2012-08-26 17:22:22 zamiast '\n' mam zrobic '\\n' |
Nie. '\n' i inne specjalne znaki zapisujesz normalnie. Jedynie backslash piszesz podwójnie, tj. zamiast " \ " powinieneś mieć " \\ " . |
|
Konradex Temat założony przez niniejszego użytkownika |
» 2012-08-26 17:24:32 a to chodzi o to to backslash zamieniłem na slasha, to była moja mała wpadka stylistyczna, że tak powiem. Ale nadal po tych zmianach jest ten sam błąd. |
|
DejaVu |
» 2012-08-26 17:29:35 Z kodu wynika, że nie wiesz jak się wywołuje funkcje (dlatego masz błędy).
Funkcje - pierwsze starcie
Dziwię się tylko, że jesteś na etapie programowania obiektowego, a podstawy kuleją (no chyba, że błędy wynikają z niedopatrzenia co też się czasem zdarza). |
|
Konradex Temat założony przez niniejszego użytkownika |
» 2012-08-26 20:26:30 @up dziękuje naprowadziłeś mnie na dobrą drogę :) Zapomniałem, że chce wywołać funkcje, a nie dane. |
|
« 1 » |