2016-03-27 76 views
0

Visual C++將不接受hOut(標識符未定義)。我試圖搜索並添加所有需要的庫,但它仍然無法正常工作。對於我的知識,我需要包括庫WINDOWS.H,cstdlib和STDLIB.H這是我的代碼:Visual C++不會接受hOut

#include "stdafx.h" 
#include <iostream> 
#include <vector> 
#include <iomanip> 
#include <stack> 
#include <cstdlib> 
#include <string> 
#include <windows.h> 
#include <stdlib.h> 

using namespace std; 

class karta 
{ 
public: 
    karta(string litery[], bool licznik[][13], string kolory[]); 
    ~karta(); 
    void WypiszKarte(); 

private: 
    string litera; 
    string kolor; 
}; 

karta::karta(string litery[], bool licznik[][13], string kolory[]) 
{ 
    bool karta_zmieniona; 
    do 
    { 
     karta_zmieniona = 0; 

     int losowana_litera = 0 + rand() % 13; 
     int losowany_kolor = 0 + rand() % 4; 

     if (licznik[losowany_kolor][losowana_litera]) //jesli mozemy jeszcze wylosowac daną litere 
     { 
      licznik[losowany_kolor][losowana_litera]; 
      litera = litery[losowana_litera]; 
      kolor = kolory[losowany_kolor]; 
      karta_zmieniona = true; 
     } 





    } while (!karta_zmieniona); 
} 

void karta::WypiszKarte() 
{ 
    cout << setw(2) << kolor << litera; 
} 

karta::~karta() 
{ 

} 

int main() 
{ 
    string litery[13] = { "A" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" ,"J" ,"Q" ,"K" }; 
    string kolor[4] = { "+" , "-" , "*" , "=" }; 
    bool licznik[4][13]; 

    for (int i = 0; i < 4; i++) 
    { 
     for (int j = 0; j < 13; j++) 
     { 
      licznik[i][j] = { true }; 
     } 

    } 

    vector<vector<karta>> plansza; 

    vector<karta> rzad; 




    for (int i = 0; i < 4; i++) 
    { 
     for (int i = 0; i < 7; i++) 
     { 
      rzad.push_back(karta(litery, licznik, kolor)); 
     } 

     plansza.push_back(rzad); 

     rzad.clear(); 
    } 

    for (int i = 0; i < 4; i++) 
    { 
     for (int i = 0; i < 6; i++) 
     { 
      rzad.push_back(karta(litery, licznik, kolor)); 
     } 

     plansza.push_back(rzad); 

     rzad.clear(); 
    } 


    for (int i = 0; i < plansza[i].size(); i++) 
    { 
     SetConsoleTextAttribute(hOut, BACKGROUND_RED); 
     cout << " " << i+1; 
     for (int j = 0; j < 8; j++) 
     { 
      plansza[j][i].WypiszKarte(); 
     } 
     cout << endl; 
    } 

    system("pause"); 



    return 0; 
} 

爲什麼會這樣?

+2

你從哪裏得到了'hOut'? –

+2

您*知道變量需要在使用之前進行聲明,定義和初始化? –

+1

閱讀https://msdn.microsoft.com/en-us/library/windows/desktop/ms686047%28v=vs.85%29.aspx,鏈接到https://msdn.microsoft.com/en-us /library/windows/desktop/ms686974%28v=vs.85%29.aspx有你的答案 – stijn

回答

1

你的豪特是不確定的和未初始化,如果你沒有,如果這樣的"stdafx.h"定義它,(因爲其他的頭文件是標準庫,他們將永遠無法定義豪特),添加代碼:

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

代碼之前:

SetConsoleTextAttribute(hOut, BACKGROUND_RED);

(注:豪特就是我們定義了一個varible,你可以把它改成任何法律名稱)。