class mob;
class player
{
public:
sf::RectangleShape rect;
float bottom, left, right, top;
player(sf::Vector2f position, sf::Vector2f size, sf::Color color);
void update();
void collision(mob M);
};
衝突定義:LNK 1120:解析外部符號
void player::collision(mob M)
{
if(right < M.left)
rect.setPosition(M.left, rect.getPosition().y);
}
我做出了碰撞功能在以前的一個布爾值,建立這樣它會返回true或false。那麼,在測試它作爲一個布爾,我決定把它作爲一個空白。但是,只要我做了一個空隙,我得到這個錯誤:
1>main.obj : error LNK2001: unresolved external symbol "public: bool __thiscall player::collision(class mob)" ([email protected]@@[email protected]@@Z)
1>C:\SFML_Project\Release\SFML_Project.exe : fatal error LNK1120: 1 unresolved externals
而且,如果需要的話,你可以在這裏找到聲明:
int main()
{
sf::RenderWindow Window;
Window.create(sf::VideoMode(800,600),"SFML Project");
player Cplayer(sf::Vector2f(10,10), sf::Vector2f(32,32), sf::Color::Red);
mob Cmob(sf::Vector2f(368,284), sf::Vector2f(64,32), sf::Color::Blue);
Window.setKeyRepeatEnabled(true);
while(Window.isOpen())
{
sf::Event Event;
while(Window.pollEvent(Event))
{
switch(Event.type)
{
case sf::Event::Closed:
Window.close();
break;
/*case sf::Event::LostFocus:
std::cout << "Window lost focus!" << std::endl;
break;*/
}
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
Cplayer.rect.move(0, -0.2);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
Cplayer.rect.move(0, 0.2);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
Cplayer.rect.move(0.2, 0);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
Cplayer.rect.move(-0.2, 0);
}
Cplayer.update();
Cmob.update();
Cplayer.collision(Cmob);
Window.draw(Cplayer.rect);
Window.draw(Cmob.rect);
Window.display();
Window.clear();
}
}
編輯:
看來我的帖子已被標記爲重複。這是一個不那麼微妙的轉移舉證責任的方式。鏈接線程中的答案與我的問題沒有任何關係,並且環境在此處發生急劇變化。
@ 0x499602d2 [所以我們仍在使用它?](http://meta.stackoverflow.com/questions/265806/should-regular-faq-style-answers-be-closed-as-too-broad) ;-) ... – 2014-08-28 03:29:15
舉證責任實際上始終在OP上提出質量問題,社區將關閉/標記爲不符合現場標準的重複問題。儘管我願意相信你,但你的編輯只是聲稱*這些問題沒有關係,沒有提供任何實際的區別或澄清。如果你能幫助我理解爲什麼他們不同,我會很樂意投票重新開放。 – dimo414 2014-08-28 04:08:18