kitsss Temat założony przez niniejszego użytkownika |
składnik statyczny w klasie » 2014-03-29 13:28:41 Chce stworzyć składnik statyczny dla mojej klasy, bo wiem, ze wszystkie obiekty (a będzie ich dużo) będą miały taką samą wartość dla jednej danej składowej: Plik nagłówkowy: #ifndef naglowek_hpp #define naglowek_hpp
#include <iostream> #include <cstdlib> #include <string>
using namespace std;
class kurczak { bool czy_byl_spr; string nazwa; static char polozenie; };
char kurczak::polozenie = 'B';
#endif
Uczyniłem go private, bo na pewno nie będę go modyfikować, ale mam problem z ostatnia linijką programu (definicją tego składnika statycznego poza klasą). Kompilator informuje, że mój projekt jest prawdopodonie nieskończony i czy chcę go jeszcze zmodyfikować, gdy klikam nie, otwiera się tylko konsola i nie robi nic, co powinna. (nawet coutów nie pokazuje z maina). Gdy zniszczę definicję w zakresie pliku(mowa ciągle o ostatniej linijce), wszystko działa jak należy. |
|
OczkoSX |
» 2014-03-29 13:38:44 Nie możesz od razu przypisać wartości ? static char polozenie = 'B' |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2014-03-29 13:51:18 C:\Users\...\naglowek.hpp|14|error: ISO C++ forbids in-class initialization of non-const static member 'kurczak::polozenie'| ||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|
No wlasnie nie, ale jesli tylko deklaruje, to wszystko działa bezbłędnie:
|
|
OczkoSX |
» 2014-03-29 13:53:15 Spróbuj przed char napisać static |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2014-03-29 14:13:59 Tak na pewno nie może być (niezgodność z językiem) :( C:\Users\...\naglowek.hpp|74|error: 'static' may not be used when defining (as opposed to declaring) a static data member [-fpermissive]| Dla porównania, ten programik działa, a jest zrobiony identycznie: #include <cstdlib> #include <iostream>
using namespace std;
class stos { static int k; public: void wypisz() { cout << k << endl; } };
int stos::k = 3000;
int main() { stos obiekt; obiekt.wypisz(); system( "PAUSE" ); return EXIT_SUCCESS; }
Myśle, że coś nie gra z tym, że tamto jest robione w pliku nagłówkowym... UP: Tak, to na pewno przez to, przekleiłem nie zmieniając cały ten problematyczny kod do funkcji głównej main usuwając przy tym nagłówek, wszystko działa należycie. Teraz pytanie, co robie nie tak w nagłówkowym przy tworzeniu tego składnika statycznego. |
|
OczkoSX |
» 2014-03-29 14:22:17 Spróbuj rebuild projektu. PRzepraszam za tamto ale jestem niewyspany i nie ogarniam :D |
|
kitsss Temat założony przez niniejszego użytkownika |
» 2014-03-29 14:27:23 Spokojnie ;p Niestety ciągle ten sam komunikat, że projekt wydaje się niezbudowany i czy chcę go jeszcze zmodyfikować. |
|
OczkoSX |
» 2014-03-29 17:49:17 Skoro nieudana kompilacja to znaczy że były błędy. Sprawdz logi |
|
« 1 » 2 |