Bu yüzden bir proje için metin tabanlı bir video oyunu yapmak zorundayım. "Kiremit" ve sonra "duvar" adında bir alt sınıf denilen bir sınıf yaptım. Daha sonra aşağıda gösterilen bir dizi fayans yaptım. Merkezi karo, B2 bir duvardır. typeid(B2)==typeid(wall)
'u karşılaştırdığımda, döşeme B2'nin duvar tipi olmasına rağmen false değerini döndürür. "Savaşçı" sınıfının bir x ve bir y bileşeni vardır.Typeid neden her zaman false döndürüyor?
//Initiate map
const int rows = 3;
const int cols = 3;
tile A1, A2, A3, B1, B3, C1, C2, C3;
fighter wizard(1, 2, 6, ft::mage, 100);
C3 = tile(wizard, "There's all this magic stuff everywhere.");
wall B2= wall("A wall blocks your path.");
tile map[rows][cols] = {{A1, A2, A3},
{B1, B2, B3},
{C1, C2, C3}};
...
fighter player1(0, 0, 0, ft::warrior);
...
string input = "";
while(input!="quit")
{
cin >> input;
if (input == "left") {
if (typeid(map[player1.y][player1.x - 1]) == typeid(wall))
cout << map[player1.y][player1.x - 1].scene;
Peki, neden sizce Ayrıca bkz' [player1.y] [1 player1.x] map? Ben saf bir kiremit olduğunu söyleyebilirim (B2 bir duvar olsa bile, nesne kopyası => ** dilimleme **) – deviantfan
http://stackoverflow.com/questions/274626/what-is-object-slicing – deviantfan
@deviantfan doğru yolda. Bir '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'dizisini kopyalamaya çalıştığınızda bir sorun yaşarsınız. Tile * 'nin temel sınıf olduğu için,“ Döşeme * ”veya“ Duvar * ”türlerine işaret eden bir dizi * Döşeme * türüne sahip olduğunuzu tahmin ediyorum. –