[英]Constructor not called c++
我在DLL中有以下代碼:
Game::Game(int width, int height)
: world(width, height),
renderer("Game", 800, 600),
font(),
text(),
keyboard()
{
// Code
}
keyboard
是指向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 ++,那么請考慮花一些時間來閱讀。
原因是C ++是一種通過實驗學習的可怕語言,主要有兩個原因:
並非所有事情都是合乎邏輯的。 許多C ++規則是語言和委員會決策演變的結果。 解決問題的最明顯答案通常不是C ++中的正確答案。 了解該語言的唯一方法是閱讀它。
語言的主要哲學是程序員永遠不會犯錯誤。 在其他語言中,當您犯錯時,“運行時錯誤天使”會停止程序並告訴您出了什么問題。 在C ++中,當您犯錯時,“未定義的行為守護程序”將獲得代碼的合法所有權,並會盡力使您遭受最大可能的損害,例如,使程序靜默運行一段時間,直到您決定之前展示給某人,然后僅將其崩潰。
混合1 + 2非常危險:語言很復雜,不會告訴您錯誤。 幫自己一個忙,先閱讀一個不錯的C ++書籍封面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.