Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        3年前关闭。
                                                                                            
                
        
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),请添加代码:

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

在您的代码之前:

SetConsoleTextAttribute(hOut, BACKGROUND_RED);

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

09-10 09:42