oluşturulan nesne geçmesi bir temel sınıf şekil ve dikdörtgen ve daire gibi birkaç alt sınıfları türetilen. Tüm Şekiller 2d vektöründe, başka bir 2d vektörüne göre karakterlerle saklanmalıdır (her karakter, 'o' -> Daire gibi bir şekli temsil etmektedir).C++ - yöntem
yöntem addShapeAtEndOfLine (şekil s, vektör * çizgi) vektörüne nesne itmelidir:
void Game::addShapeAtEndOfLine(Shape s, vector<Shape>* line)
{
line->push_back(std::move(s));
}
Game::Game(vector<string> game_validate)
{
for(auto it_a = game_validate.begin() + 2; it_a < game_validate.end(); it_a++)
{
vector<Shape> *currentLine = new vector<Shape>();
string current_line = *it_a;
for (auto it_b = current_line.begin(); it_b < current_line.end(); it_b++)
{
if(*it_b == 'o')
{
addShapeAtEndOfLine(new Circle(*it_b), currentLine);
} else if (*it_b == '#')
{
addShapeAtEndOfLine(new Rectangle(*it_b), currentLine);
}
}
}
}
başlık dosya i böyle bir vektör var:
vector < vector <Shape> > field;
Ne yazık ki bu işe yaramıyor çünkü Daire/Dikdörtgen kurucusunun bir referansa ihtiyacı var gibi görünüyor:
Circle::Circle(char character) : Shape(character) {
}
zaman bu hata iletisini derlemeye çalışıyor: (bir referans olduğu için) Bu kullandığınızda
error: invalid conversion from 'Circle*' to 'char' [-fpermissive]
bunun yerine işleri:
if(*it_b == 'o')
{
Shape* c = new Circle('o');
addShapeAtEndOfLine(*c, currentLine);
}
mı bir fikrim var neden bu değil Yöntemi nesnede oluşturduğumda çalışıyorum, bunu yapmak için neler yapabileceğimi söyler misiniz? Yardım için
teşekkürler!
Sizin şeyi yanlış yapıyor. Nesne dilimlemeye bakın. – NathanOliver
'b' nedir? Duvar nedir? – aschepler
İstediğiniz için teşekkürler -/edit. –