如何在派生类中更改继承变量的类型? 我有以下类:其中问题是由一个箭头标记派生类中的向上变量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