如何在派生類中更改繼承變量的類型? 我有以下類:其中問題是由一個箭頭標記派生類中的向上變量C++
class Position;
class StonePosition;
class Position {
public:
Position() {}
};
class StonePosition : public Position {
int count;
public:
StonePosition(const int count) { this->count = count; }
int getCount() { return this->count; }
void setCount(int count) { this->count = count; }
friend ostream& operator<<(ostream&, StonePosition);
};
class Board {
protected:
Position* crrPos;
public:
Board() { }
Position* getCrrPos() { return crrPos; }
void setCrrPos(Position* pos) { crrPos=pos; }
};
class StoneBoard : public Board {
public:
StoneBoard(const int &count) { this->crrPos=new StonePosition(count); } //<----------------
StonePosition* getCrrPos() { return (StonePosition*)crrPos; }
void setCrrPos(StonePosition* pos) { crrPos=pos; }
};
地方。我需要在StoneBoard類中將變量的類型從Position更改爲StonePosition。我發現了一個可用於上傳的選項,但它只能在單一方法中使用,而且我需要更改整個類的變量。
問題解決了,看看我的答案。
'template class TBoard {..}'可能會有所幫助。 –
Jarod42
C++並不那麼靈活。你不能改變變量的類型。這就是爲什麼'模板'存在https://en.wikipedia.org/wiki/Template_(C%2B%2B) –
爲什麼你需要改變類型?看起來你可以在需要的時候將'dynamic_cast'變成'StonePosition'(就像你使用'getCrrPos' – lcs