0
こんばんは、私はトピックで質問を検索しないが、残念ながら私のためのヒント と提案作品のどれもしなかったすべてのC++エラー:コールに該当する機能、G ++コンパイラ
まず。以下に簡単なコード:要するに
random_device rd;
mt19937 rng(rd());
uniform_int_distribution<int> wspolrzedna(1, 19);
uniform_int_distribution<int> kierunek(0, 3);
class one {
public:
int x, y, direction;
bool collision = false;
one(int x, int y, int k):x(x),y(y),direction(k) {
};
one(){};
~one() {};
void check(one& a){
if((a.x==x) && (a.y==y)){
a.collision =true;
collision =true;
}
};
};
class two : public one {
public:
int x,y,k,ms;
two(int x, int y, int k, int m):one(x,y,k),ms(m){
};
two(){};
~two() {};
};
int main(int argc, char *argv[]){
vector<one*> tmp;
tmp.push_back(new two(1, 2, 0,3));
for(int i=0;i<2;i++)
tmp.push_back(new one(wspolrzedna(rng),wspolrzedna(rng),kierunek(rng)));
for(int i=1;i<2;i++)
tmp[i]->check(tmp[0]);
return 0;
}
は、私は1つのオブジェクトのXとを比較する(TMP [0])は、他のオブジェクトのxと(TMP [1]及びTMP [2])。 (y座標についても同じです)。 コンパイラ(G ++)エラー:
g++ -std=gnu++11 stack.cpp -o stack
stack.cpp: In function 'int main(int, char**)':
stack.cpp:56:23: error: no matching function for call to 'one::check(one*&)'
tmp[i]->check(tmp[0]);
^
stack.cpp:26:7: note: candidate: void one::check(one&)
void check(one& a){
^<p>
stack.cpp:26:7: note: no known conversion for argument 1 from
'__gnu_cxx::__al
loc_traits<std::allocator<one*> >::value_type {aka one*}' to 'one&'<p>
私はデフォルトコンストラクタとこの問題を解決する方法現時点ではありません手掛かりを持っています。
問題は何ですか?エラーメッセージを読むことができませんか? –
'tmp [i] - > check(tmp [0]);' tmp [i] - > check(*(tmp [0])); ' – Rama
ありがとう。 tmp [i] - >チェック(*(tmp [0]));問題を解決します。 – Krzysiek