C++で次のコードを記述しました。関数 "change_list"の宣言でエラーが発生します。 "不完全な型は許可されていません" "識別子"リストは "未定義"です。なぜなのかご存知ですか?問題はmylist
がPoint*
を期待するのに対し、あなたは整数を渡しているの文mylist.push_back(4)
、あるC++ pass list as a parameter to a functionC++ STLリストを関数に渡す方法
#include <iostream>
#include <list>
typedef struct Point {
int x;
int y;
} Point;
Point* initPoint(int x, int y) {
Point* pt = (Point*)malloc(sizeof(Point));
pt->x = x;
pt->y = y;
return pt;
}
void change_list(list<Point*> &mylist){ // ERROR!!!
mylist.push_back(4);
}
int main()
{
using namespace std;
list<Point*> c1; // initiating a list
c1.push_back(initPoint(1, 1));
c1.push_back(initPoint(2, 2));
c1.push_back(initPoint(3, 3));
change_list(c1);
for (Point* c : c1)
cout << " " << c->x;
cout << "\n";
return 0;
}
'のstd :: list'を試してみてください。 – songyuanyao
'Point * pt =(Point *)malloc(sizeof(Point));'は危険な場所と間違った場所の間にあります。なぜC++の代わりにCスタイルの割り当てを使用しますか? (割り当てられたメモリを決して解放しないので、メモリリークもあります) – UnholySheep
@songyuanyao、ありがとう。答えとして書いてください、私は受け入れます。 – CrazySynthax