У меня проблема, когда я использую статическую переменную в своем конструкторе классов. Мне нужно установить два значения, равные нулю, в первой строке инициализации в конструкторе, но я не хочу, чтобы они устанавливались в ноль после повторного вызова конструктора. Эти два значения будут увеличены. Поэтому, узнав о статических переменных, я попытался использовать статические переменные в своем конструкторе, но ошибки показали.
Итак, я хочу, чтобы значения horPos и vertPos были установлены на ноль только один раз в конструкторе, а затем увеличены в другой функции.
IOMovement.cpp:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include "IOMovement.h"
#include "rectangle.h"
#define W_KEY 0x57
#define S_KEY 0x53
#define A_KEY 0x41
#define D_KEY 0x44
#define R_KEY 0x52
void IOMovement::IO() {
rectangle player(15, 5);
if (GetAsyncKeyState(W_KEY)) {
system("CLS");
vertPos--;
player.rectangleDrawPos(horPos, vertPos);
}
if (GetAsyncKeyState(S_KEY)) {
system("CLS");
vertPos++;
std::cout << "Working\n";
player.rectangleDrawPos(horPos, vertPos);
}
if (GetAsyncKeyState(A_KEY)) {
system("CLS");
horPos--;
player.rectangleDrawPos(horPos, vertPos);
}
if (GetAsyncKeyState(D_KEY)) {
system("CLS");
horPos++;
player.rectangleDrawPos(horPos, vertPos);
}
}
void IOMovement::IOStartup() {
//Variable decleration
vertPos = 0;
horPos = 0;
//Functions
IO();
}
IOMovement.h:
#ifndef IOMOVEMENT_H
#define IOMOVEMENT_H
class IOMovement {
static int vertPos, horPos;
void IO();
public:
void IOStartup();
};
#endif