で作成されたオブジェクトを渡します。すべての図形は、文字を持つ別の2次元ベクトル(すべての文字は 'o' - >円のような形を表しています)に従って、2次元ベクトルに格納する必要があります。C++ - 私は、基本クラス<em>形状</em>を有し、<em>長方形</em>と<em>サークル</em>ようないくつかのサブ・クラスを派生方法
vector < vector <Shape> > field;
:私はこのようなベクトルを持っているヘッダファイルで
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);
}
}
}
}
:
方法addShapeAtEndOfLine(形状s、ベクトル*ライン)がベクター内のオブジェクトをプッシュするべきであるに
残念ながら、Circle/Rectangleのコンストラクタが参照を必要とするように、これはうまくいきません:
Circle::Circle(char character) : Shape(character) {
}
私は、このエラー・メッセージが表示されるコンパイルしよう:
error: invalid conversion from 'Circle*' to 'char' [-fpermissive]
私が代わりにこれを使用する場合(これは参照だから)、それは動作します:
if(*it_b == 'o')
{
Shape* c = new Circle('o');
addShapeAtEndOfLine(*c, currentLine);
}
あなたはなぜこのISNアイデアを持っていますかそれぞれのメソッドでオブジェクトを作成するときに作業していますが、私はそれを動作させるために何ができるのか教えてください。
ありがとうございました!
あなたはそれをすべて間違っています。オブジェクトのスライスをルックアップします。 – NathanOliver
'b'とは何ですか? '壁'とは何ですか? – aschepler
ありがとうございました - /編集。 –