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

error: no match for 'operator<<' in 'std::operator<<

Ostatnio zmodyfikowano 2012-08-26 20:26
Autor Wiadomość
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:
C/C++
#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;
}
P-63667
DejaVu
» 2012-08-26 16:46:15
Znak \ jest znakiem specjalnym. Zapisuje się go jako \\.
P-63668
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.
P-63671
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ć
" \\ "
.
P-63672
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.
P-63674
DejaVu
» 2012-08-26 17:29:35
Z kodu wynika, że nie wiesz jak się wywołuje funkcje (dlatego masz błędy).

» Kurs C++ » Poziom 2Funkcje - pierwsze starcie lekcja

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).
P-63675
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.
P-63682
« 1 »
  Strona 1 z 1