• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Enumerat w klasie

42 Warsaw Coding Academy
0 głosów
565 wizyt
pytanie zadane 14 listopada 2018 w C i C++ przez asdfgh Nowicjusz (150 p.)

Mam w main.cpp w mainie takie coś

Kolor a;
a.setTextColor(Kolor::White);

z tego co wiem jest to enumerat. Jak taki enumerat zrobić. Ma on zmienić kolor tekstu na biały

Mam w klasie Kolor zrobić to ?

HANDLE hc;
enum Kolor
{
 White=SetConsoleTextAttribute(hc,16)
};

 

1 odpowiedź

+1 głos
odpowiedź 14 listopada 2018 przez j23 Mędrzec (195,240 p.)
wybrane 16 listopada 2018 przez asdfgh
 
Najlepsza

Mam w klasie Kolor zrobić to ?

Masz przeczytać, co to jest typ wyliczeniowy i jak się go używa. Później przeczytać dokumentację funkcji SetConsoleTextAttribute, żeby wiedzieć, co dać w drugim parametrze.

 

Jakoś tak to widzę:


enum Color:WORD // <--- zdefiniowane w klasie Kolor
{
    White = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED,
    Red = FOREGROUND_RED,
    Green = FOREGROUND_GREEN,
    Blue = FOREGROUND_BLUE
};


BOOL Kolor::setTextColor(Kolor::Color cl)
{
    return SetConsoleTextAttribute(hc, cl);
}

 

komentarz 16 listopada 2018 przez asdfgh Nowicjusz (150 p.)

mógłbyś wytłumaczyć co powinno być argumentami funkcji GetConsoleScreenBufferInfo()

static WORD get_default_color() { GetConsoleScreenBufferInfo()}

i w którym miejscu powinno być

const WORD Kolor::defaultColor = Kolor::get_default_color();

pod klasą czy w pliku .cpp?

komentarz 16 listopada 2018 przez j23 Mędrzec (195,240 p.)

Przecież w swojej wersji manipulatora używasz GetConsoleScreenBufferInfo. To nad czym tu się zastanawiasz?

 

czy w pliku .cpp?

W pliku cpp.

komentarz 16 listopada 2018 przez asdfgh Nowicjusz (150 p.)
edycja 16 listopada 2018 przez asdfgh

Zrobiłem tak

 

private:
	static HANDLE hc;
	static CONSOLE_SCREEN_BUFFER_INFO buff_info;
	static WORD get_default_color() { GetConsoleScreenBufferInfo(hc, &buff_info);}
public:
	static const WORD defaultColor;

ale pokazuje, że get_default_color() musi zwracać wartość

komentarz 16 listopada 2018 przez j23 Mędrzec (195,240 p.)

Weź może jakąś książkę do C/C++ i poczytaj o funkcjach/metodach i innych przydatnych rzeczach związanych z podstawami języka.

 

static WORD get_default_color() 
{ 
    CONSOLE_SCREEN_BUFFER_INFO buff_info;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buff_info);
    return buff_info.wAttributes;
}

 

komentarz 16 listopada 2018 przez asdfgh Nowicjusz (150 p.)
Dobra sory jestem debilem. Siedzę od 12 i przestaje myśleć. Wielkie dzięki za twój czas

Podobne pytania

0 głosów
4 odpowiedzi 296 wizyt
0 głosów
1 odpowiedź 631 wizyt
pytanie zadane 20 lipca 2023 w C i C++ przez Krzysztofs1234 Użytkownik (890 p.)
+1 głos
2 odpowiedzi 498 wizyt
pytanie zadane 25 grudnia 2020 w C i C++ przez TOWaD Mądrala (6,420 p.)

93,385 zapytań

142,384 odpowiedzi

322,540 komentarzy

62,746 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...