2

クラスの場合、スタックを使用する必要があります。私が言えることから、スタックを作成します

#include <stack>
class c1
{
    stack<Point> openstack;
};

Point は私が作成したクラスで、単純な 2D グラフィックスで使用するポイントを格納するための x および y の int 値があります。私が抱えている問題は、もしそうなら

Point p = openstack.pop();

エラーが表示されます:「void から Point に変換するための適切なコンストラクターが存在しません」

ポイントには、ポイントを取得し、渡されたポイントを使用して x 値と y 値を格納する set 関数がありますが、これも機能しません。

Point p;
p.set(openstack.pop()); // does not work

誰かが私が間違っていることを教えてもらえますか? 情報が必要な場合はお尋ねください - 必要に応じてさらに情報を提供できます。

4

1 に答える 1

8

pop()値を返しません。最上位の値を削除するだけです。次のように宣言されています。

void pop();

一番上の値を取得するには、 を呼び出す必要がありますtop()。その後、 を呼び出すことができますpop()

Point p = openstack.top();
openstack.pop();

がポップされた値を返さない理由はいくつかあります。pop()

于 2012-11-09T22:49:47.310 に答える