视觉C++不会接受

Visual C++ won't accept hOut

本文关键字:C++ 视觉      更新时间:2023-10-16

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

为什么会这样?

如果您没有在"stdafx.h"中定义hOut,则hOut未定义且未初始化(因为其他头文件都在标准库中,所以它们永远不会定义hOut)如果是这样,请添加代码:

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

在您的代码之前:

SetConsoleTextAttribute(hOut, BACKGROUND_RED);

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