gpt4 book ai didi

c++ - 构造函数不调用c++

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:34 26 4
gpt4 key购买 nike

我在 DLL 中有这段代码:

Game::Game(int width, int height)
: world(width, height),
renderer("Game", 800, 600),
font(),
text(),
keyboard()
{
// Code
}

keyboard 是指向键盘对象的指针。构造函数中的代码被调用,但键盘对象仍然为空。为什么没有创建对象?

键盘构造函数:

Keyboard() {
A = new Key('a');
B = new Key('b');
C = new Key('c');
D = new Key('d');
E = new Key('e');
F = new Key('f');
G = new Key('g');
H = new Key('h');
I = new Key('i');
J = new Key('j');
K = new Key('k');
L = new Key('l');
M = new Key('m');
N = new Key('n');
O = new Key('o');
P = new Key('p');
Q = new Key('q');
R = new Key('r');
S = new Key('s');
T = new Key('t');
U = new Key('u');
V = new Key('v');
W = new Key('w');
X = new Key('x');
Y = new Key('y');
Z = new Key('z');

ZERO = new Key('0');
ONE = new Key('1');
TWO = new Key('2');
THREE = new Key('3');
FOUR = new Key('4');
FIVE = new Key('5');
SIX = new Key('6');
SEVEN = new Key('7');
EIGHT = new Key('8');
NINE = new Key('9');

ARROW_UP = new Key(' ');
ARROW_DOWN = new Key(' ');
ARROW_LEFT = new Key(' ');
ARROW_RIGHT = new Key(' ');

SHIFT = new Key(' ');
}

如何调用键盘构造函数?

最佳答案

如果 keyboard 是一个指针,语法应该是

Game::Game(int width, int height)
: world(width, height),
renderer("Game", 800, 600),
keyboard(new Keyboard)
{ ... }

如果 text/font 也是指针,也应该这样做。

我不想冒犯您,但这是一个关于指针/实例在 C++ 中如何工作的非常基本的问题。如果您是通过在阅读该语言之前编写和尝试代码来学习 C++,那么请考虑先投入一些时间进行阅读。

原因是 C++ 是一种通过实验学习的可怕语言,主要原因有两个:

  1. 并非所有事情都是合乎逻辑的。许多 C++ 规则是语言发展和委员会决定的结果。问题最明显的答案通常不是 C++ 中的正确答案。了解该语言的唯一方法是阅读它。

  2. 语言的主要哲学是程序员永远不会犯错误。在其他语言中,当您犯错时,“运行时错误天使”会停止程序并告诉您出了什么问题。相反,在 C++ 中,当您犯错时,“未定义行为守护进程”将获得代码的合法所有权,并会尽力对您造成最大可能的损害,例如,让程序安静且良好地运行一段时间,直到您决定把它展示给别人看,然后才让它崩溃。

混合 1 + 2 非常危险:语言很复杂,而且不会告诉您错误。帮自己一个忙,先阅读 a good C++ book从头到尾。

关于c++ - 构造函数不调用c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com