所以我有這個問題,其中輸出打印我的指針的地址,我不知道爲什麼發生這種情況的Cuz指針在所有指針會隨機打印出來的地址,而不是它的尖值,C++
沒有被修改繼承人的代碼:
using namespace std;
class AndroideAbstracto {
protected:
int *vida;
int *fuerza;
int *velocidad;
public:
void setvalores(int vi, int fu, int ve) {
velocidad = &ve;
vida = &vi;
fuerza = &fu;
};
virtual void imprimir(void) = 0;
};
class Androide : public AndroideAbstracto {
public:
void imprimir() {
std::cout << "Caracteristicas del androide:" << endl;
cout << "Velocidad = " << *velocidad << endl;
cout << "Vida = " << *vida << endl;
cout << "Fuerza = " << *fuerza << endl;
};
};
class Decorator : public AndroideAbstracto {
protected:
AndroideAbstracto *AndroideDec;
public:
Decorator(AndroideAbstracto* android_abs) {
AndroideDec = android_abs;
}
virtual void imprimir(void) = 0;
};
class Androide_Con_Habi : public Decorator {
protected:
string habilidad;
public:
Androide_Con_Habi(AndroideAbstracto* android_abs, string habi) : Decorator(android_abs) {
habilidad = habi;
}
virtual void imprimir() {
AndroideDec->imprimir();
cout << "La habilidad especial del androide es: " << habilidad << endl;
}
};
class Androide_Elegido : public Decorator {
protected:
bool elegido;
public:
Androide_Elegido(AndroideAbstracto *android_abs, bool es) : Decorator(android_abs) {
elegido = es;
}
virtual void imprimir() {
if (elegido) {
// *vida =(*vida) * 2; //Im quite new to C++ so im not really
// *fuerza *=2; //sure how should I multiply these pointers
// *velocidad *=2;
// AndroideDec->setvalores(vida*2,fuerza*2,velocidad*2);
AndroideDec->imprimir();
cout << "Este androide es uno de los elegidos";
}
}
};
int main(int argc, char *argv[]) {
Androide *andro = new Androide();
andro->setvalores(600, 700, 300);
andro->imprimir();
Androide_Con_Habi *andro_con_habi = new Androide_Con_Habi(andro, "Volar");
andro_con_habi->imprimir();
Androide_Elegido *superpoderoso = new Androide_Elegido(andro, true);
superpoderoso->imprimir();
delete superpoderoso;
delete andro;
delete andro_con_habi;
return 0;
}
我不知道爲什麼,但這個打印:
Caracteristicas del androide:
Velocidad = 300
Vida = 600
Fuerza = 700
Caracteristicas del androide:
Velocidad = 300
Vida = 152436744
Fuerza = -1074718788
La habilidad especial del androide es: Volar
Caracteristicas del androide:
Velocidad = 300
Vida = 152436744
Fuerza = 1
Este androide es uno de los elegidos
請寫出標準的英語。我在你的代碼中沒有提到西班牙文,而是用你描述並且詢問你的代碼的看似故意潦草的英文。 – thb 2012-03-31 03:53:40
我建議你閱讀一本[很好的C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。您似乎正在將Java思想應用於C++,這是一種非常糟糕的方式。 – Pubby 2012-03-31 03:54:15
是的,實際上最後一個學期,我使用的是java:P,對西班牙語的東西感到抱歉......我懶得編輯所有的東西= /。不管怎樣,謝謝你們兩位! – 2012-03-31 04:00:29