【发布时间】:2018-04-28 23:37:24
【问题描述】:
我在类构造函数中使用静态变量时遇到问题。我需要在构造函数的第一行初始化中设置两个等于零的值,但我不想在再次调用构造函数后将它们设置为零。这两个值将递增。因此,在了解了静态变量之后,我尝试在构造函数中使用静态变量,但出现了错误。
所以,我想要的是 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
【问题讨论】:
-
"但我不想在再次调用构造函数后将它们设置为零。" - 你想让它们设置成什么?为什么你认为你需要这样做?
标签: c++ windows visual-studio class object