Visual C ++不接受hOut

时间:2016-03-27 08:22:40

标签: c++ console formatting

Visual C ++不接受hOut(标识符未定义)。我试图搜索并添加所有需要的库,但它仍然无法工作。据我所知,我需要包含的库是windows.h,cstdlib和stdlib.h这是我的代码:

#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;
}

为什么会这样?

1 个答案:

答案 0 :(得分:1)

如果你没有在"stdafx.h"中定义它,你的hOut是未定义的和未初始化的,(因为其他头文件在标准库中,它们永远不会定义hOut)如果是这样,添加代码:< / p>

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

在您的代码之前

SetConsoleTextAttribute(hOut, BACKGROUND_RED);

(注意:hOut只是我们定义的变量,您可以将其更改为任何合法名称)。