Problem z inicjalizacją danych składowych klasy
Ostatnio zmodyfikowano 2013-08-15 21:09
Lutek Temat założony przez niniejszego użytkownika |
Problem z inicjalizacją danych składowych klasy » 2013-08-15 16:32:18 Witan, po utworzeniu nowej klasy chciałbym nadać składowym wartości początkowe. Plik nagłówkowy klasy wygląda tak: #pragma once class fighter { public: double HP; double MP; double Attack; double Defense; void PlayerAttack(); void PlayerBlock(); void EnemyAttack(); void EnemyBlock(); }; W pliku głównym tworzę obiekt tej klasy, a potem próbuję przypisać wartość do zmiennej HP: #include "stdafx.h" #include "TextAndGraphics.h" #include "fighter.h" #include <string> using namespace std; string Command; fighter Player; Player.HP = 99.0;
int main() { } Po próbie skompilowania programu pojawia się komunikat: error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C2371: 'Player' : redefinition; different basic types Nigdzie oprócz pliku głównego nie definiowałem obiektu Player, nie mam pojęcia jak z tym się uporać... P.S. piszę w Visual 2010 Express. |
|
pekfos |
» 2013-08-15 16:34:50 Tak się tego nie robi. Poczytaj o konstruktorach. |
|
kubek3898 |
» 2013-08-15 16:36:22 Nie możesz modyfikować prywatnych danych klasy bezpośrednio (o ile tak to się nazywa) do tego nie po za funkcją main() (choć co do tego nie jestem w 100% pewny, lecz wszędzie w przykładach oraz programach definicja obiektu jest w funkcji main()) |
|
Lutek Temat założony przez niniejszego użytkownika |
» 2013-08-15 16:38:29 Dzięki za naprowadzenie. Własnie o konstruktorach nie doczytałem, więc moja wina. @kubek3898: Tam zawsze robiłem public, potem na chwilę zmieniłem i przy wklejaniu tutaj zapomniałem zmienić z powrotem na public. Już poprawiłem :) |
|
Lutek Temat założony przez niniejszego użytkownika |
» 2013-08-15 21:09:58 Już sobie poradziłem :) Plik z definicją klasy: #pragma once class fighter { public: void PlayerAttack(); void PlayerBlock(); void EnemyAttack(); void EnemyBlock(); fighter( double H, double M, double Att, double Def ); private: double HP; double MP; double Attack; double Defense; };
fighter::fighter( double H, double M, double Att, double Def ) { HP = H; MP = M; Attack = Att; Defense = Def; } Plik główny: #include "stdafx.h" #include "TextAndGraphics.h" #include "fighter.h" #include <string> using namespace std; string Command; fighter Player( 99.0, 99.0, 20.0, 30.0 ), Enemy( 99.0, 99.0, 40.0, 10.0 );
int main() { }
|
|
« 1 » |