[英]error LNK2019 unresolved external function
當我編譯程序時,我得到:
程序工作,如果我評論這些部分(功能車輛::驅動器):
if (check_position(pos, number, 1, 0))
continue;
change_position(pos, number, 1, 0);
功能change_position和check_position(terrain.cpp):
void change_position(vehicles::position &pos, int number, int vertical, int horizontal){
pos.x[number] = pos.x[number] + vertical;
pos.y[number] = pos.y[number] + horizontal;
}
bool check_position(vehicles::position &pos, int number, int vertical, int horizontal)
{
if (pos.x[number] + vertical > MAX_SIZE || pos.x[number] + vertical < 0)
return true;
if (pos.y[number] + horizontal > MAX_SIZE || pos.y[number] + horizontal < 0)
return true;
return false;
}
功能車輛::驅動器(mechanics.cpp),未完成,但在上面的代碼注釋后可以工作:
void vehicles::drive(int move, vehicles::position &pos, int number)
{
int direction;
cout << "Press W,A,S,D to move or Q to quit\n\n";
while (move)
{
if (move <= 0)
break;
cin >> direction;
switch (direction)
{
case 'w':
case 'W':
if (check_position(pos, number, 1, 0))
continue;
change_position(pos, number, 1, 0);
--move;
break;
case 'q':
case 'Q':
break;
default:
cout << "Press W,A,S,D to move or Q to quit\n\n";
break;
}
}
級別車輛(vehickles.h):
class vehicles{
protected:
double durability;
double velocity;
public:
vehicles(double d, double v) : durability(d), velocity(v) {}
~vehicles() {}
struct position{
vector<int> x;
vector<int> y;
}pos;
void drive(int move, position &pos, int number);
void info() { cout << durability << " " << velocity << "\n"; }
};
這些功能的聲明:
void change_position(vehicles::position, int, int, int);
bool check_position(vehicles::position, int, int, int);
問題是您的聲明與定義不匹配。 聲明按值采用第一個參數,而定義按引用采用。 在C ++中,它們必須完全匹配,否則在使用函數重載時,鏈接器將不知道使用哪一種。 您可以通過將聲明更新為以下內容來輕松解決此問題
void change_position(vehicles::position&, int, int, int);
// ^
bool check_position(vehicles::position&, int, int, int);
// ^
我建議您將check_position
函數更改為采用const
引用的第一個參數,因為該函數不會對其進行修改。
bool check_position(const vehicles::position&, int, int, int);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.