다른 파일에서 찾은 함수를 호출하는 방법은 무엇입니까?
저는 최근에 C ++와 SFML 라이브러리를 선택하기 시작했습니다. "player.cpp"라는 파일에 Sprite를 정의했는지 궁금합니다. "main.cpp"에있는 메인 루프에서 어떻게 호출할까요?
내 코드는 다음과 같습니다 (1.6이 아닌 SFML 2.0입니다!).
main.cpp
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include "player.cpp"
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "Skylords - Alpha v1");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw();
window.display();
}
return 0;
}
player.cpp
#include "stdafx.h"
#include <SFML/Graphics.hpp>
int playerSprite(){
sf::Texture Texture;
if(!Texture.loadFromFile("player.png")){
return 1;
}
sf::Sprite Sprite;
Sprite.setTexture(Texture);
return 0;
}
도움이 필요한 main.cpp
곳은 window.draw();
드로 코드에 나와 있습니다. 그 괄호 안에는 화면에로드 할 스프라이트의 이름이 있어야합니다. 내가 검색하고 추측하여 시도한 한, 그 그리기 기능이 다른 파일의 내 스프라이트와 함께 작동하도록 만드는 데 성공하지 못했습니다. 크고 분명한 것을 놓치고있는 것 같은 느낌이 들지만 (두 파일 모두에서) 모든 프로는 한때 초보자였습니다.
헤더 파일을 사용할 수 있습니다.
좋은 연습.
player.h
해당 헤더 파일에서 다른 cpp 파일에 필요한 모든 함수 선언 이라는 파일을 만들고 필요할 때 포함 할 수 있습니다.
player.h
#ifndef PLAYER_H // To make sure you don't declare the function more than once by including the header multiple times.
#define PLAYER_H
#include "stdafx.h"
#include <SFML/Graphics.hpp>
int playerSprite();
#endif
player.cpp
#include "player.h" // player.h must be in the current directory. or use relative or absolute path to it. e.g #include "include/player.h"
int playerSprite(){
sf::Texture Texture;
if(!Texture.loadFromFile("player.png")){
return 1;
}
sf::Sprite Sprite;
Sprite.setTexture(Texture);
return 0;
}
main.cpp
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include "player.h" //Here. Again player.h must be in the current directory. or use relative or absolute path to it.
int main()
{
// ...
int p = playerSprite();
//...
좋은 방법은 아니지만 소규모 프로젝트에서 작동합니다. main.cpp에서 함수를 선언하십시오.
#include "stdafx.h"
#include <SFML/Graphics.hpp>
// #include "player.cpp"
int playerSprite(); // Here
int main()
{
// ...
int p = playerSprite();
//...
프로그램 실행 방법에 대한 @ user995502의 답변에 약간의 추가.
g++ player.cpp main.cpp -o main.out && ./main.out
스프라이트는 playerSprite 함수를 통해 중간에 생성됩니다. 또한 범위를 벗어나 동일한 함수의 끝에 더 이상 존재하지 않습니다. 스프라이트는 초기화하기 위해 playerSprite에 전달할 수있는 위치와 그리기 함수에 전달할 수있는 위치에 만들어야합니다.
아마도 당신의 첫 번째 위에 선언 while
할까요?
참조 URL : https://stackoverflow.com/questions/15891781/how-to-call-on-a-function-found-on-another-file
'programing' 카테고리의 다른 글
자바 스크립트의 QR 코드 생성 라이브러리 (0) | 2020.12.25 |
---|---|
AngularJS 태그 속성 (0) | 2020.12.25 |
Github 페이지의 Jekyll : Markdown에 각주를 추가하는 방법은 없나요? (0) | 2020.12.25 |
Elasticsearch에 데이터를 삽입하는 방법 (0) | 2020.12.25 |
입력 유형 = 숫자 스타일링 (0) | 2020.12.25 |