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

Tworzenie nowych obiektów (graczy) w klasie.

Ostatnio zmodyfikowano 2017-04-20 08:38
Autor Wiadomość
Alex_Cooperek
Temat założony przez niniejszego użytkownika
» 2017-04-19 11:03:46
gracz.h
C/C++
#ifndef GRACZ_H
#define GRACZ_H
#include "karta.h"
#include <vector>

class Gracz
{
    vector < Karta *> tablica;
    string nazwa_gracza;
public:
    Gracz();
    Gracz( const string & nazwa )
        : nazwa_gracza( nazwa )
    { }
    void Gracz::dodaj_nazwe( const string & nazwa );
   
    void dodaj_nazwe( const string & nazwa );
    void dodajKarte( Karta * k );
    void wyswietl();
    int policzPunkty();
    virtual bool czyNastepna();
   
};

#endif // GRACZ_H

P-160270
darko202
» 2017-04-19 14:14:33
odwołujesz się do "Gracz::"
w środku tej klasy
prawdopodobnie przekopiowałeś to z pliku *cpp, gdzie to odwołanie jest na miejscu
zmien na
C/C++
class Gracz
{
    ...
    ///void Gracz::dodaj_nazwe( const string & nazwa );
    void dodaj_nazwe( const string & nazwa );
   
    ...
   
};

P-160274
Alex_Cooperek
Temat założony przez niniejszego użytkownika
» 2017-04-19 14:36:43
Teraz poprawiłam i zauważyłam, że dwa razy mam tą samą funkcję, ale nadal cały czas mi się wyświetlają błędy:
 błąd: declaration of 'Gracz::Gracz()' outside of class is not definition [-fpermissive]
 Gracz::Gracz();

 błąd: redefinition of 'Gracz::Gracz(const string&)'
 Gracz::Gracz(const string &nazwa):nazwa_gracza(nazwa){}

 błąd: 'Gracz::Gracz(const string&)' previously defined here
     Gracz(const string &nazwa):nazwa_gracza(nazwa){}
  
gracz.cpp
C/C++
#include "gracz.h"
using namespace std;

Gracz::Gracz();
Gracz::Gracz( const string & nazwa )
    : nazwa_gracza( nazwa )
{ }
void Gracz::dodaj_nazwe( const string & nazwa )
{
    nazwa_gracza = nazwa;
}



void Gracz::dodajKarte( Karta * k )
{
    tablica.push_back( k );
}

void Gracz::wyswietl()
{
    //for(int i=0;i<tablica.size();++i)
    for( auto k: tablica )
         k->wyswietl();
   
}

int Gracz::policzPunkty()
{
    int punkty = 0;
    for( Karta * k: tablica )
         punkty += k->dajWartosc();
   
    return punkty;
   
}

bool Gracz::czyNastepna()
{
    if( policzPunkty() <= 15 )
         return true;
    else
         return false;
   
}
P-160278
darko202
» 2017-04-20 08:38:08
jak będziesz miał podobny  problemy to poszukaj odpowiedzi w
google + zgłoszany przez kompilator błąd
(otrzymasz szybciej odpowiedz - zwłaszcza jak masz problem z którym zmierzyło się wielu przed Tobą)

np.
outside of class is not definition 
https://www.google.pl/​?gws_rd=ssl#q=outside+of+class+​is+not+definition+c%2B%2B​&spf=377

po użyciu tłumacza
https://translate.google.pl​/translate?hl=pl&sl=en&u=http:/​/forums.devshed.com​/programming-42​/declaration-outside-class-def​inition-error-416729.html​&prev=search

Oświadczenie poza klasą brak definicji
czyli znowu podstawy

deklaracja funkcji w pliku *.h kończy się po ;
czyli np.
void funcja();

a {} oznacza, że to już cała funkcja
czyli
 
void funcja()
{}

i nie można jej po raz drugi zgłaszać
kolejną sprawa jest to, że w pliku nagłówkowym nie umieszcza się ciała funkcji
a w pliku cpp powtórnie deklaracji 

C/C++
//pik h
class Gracz
{
    ...
public:
    Gracz();
    Gracz( const string & nazwa )
        : nazwa_gracza( nazwa )
    { } //<---
    .....
   
    //plik cpp
    Gracz::Gracz(); //<---

 


Powodzenia :)
P-160294
1 2 « 3 »
Poprzednia strona Strona 3 z 3