如何在另一个文件中的函数调用?(How to call on a function found on

2019-08-20 13:22发布

我最近开始回升C ++和SFML库,如果我在一个恰当地称作“player.cpp”我怎么会叫它在我位于“的main.cpp”主循环文件中定义的雪碧我想知道?

这里是我的代码(注意,这是SFML 2.0,而不是1.6!)。

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(); 在我的抽奖代码。 在这种括号,应该是我要加载到屏幕上的雪碧的名称。 虽然我已经搜查,并通过猜测试过到目前为止,我还没有成功到使该绘制函数的工作与我的其他文件精灵。 我觉得我失去了一些东西大,而且非常明显的(无论是文件),但话又说回来,每个Pro曾经是一个福利局。

Answer 1:

您可以使用头文件。

好的做法。

您可以创建一个名为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();  
    //...


Answer 2:

小除了@ user995502的答案,如何运行该程序。

g++ player.cpp main.cpp -o main.out && ./main.out



Answer 3:

你的精灵通过playerSprite函数创建中旬的方式......它也超出范围,并停止在该相同功能的结束存在。 精灵必须创建在那里你可以将它传递给playerSprite初始化它和您还可以在将它传递给你的绘制函数。

或许声明是你第上方while



文章来源: How to call on a function found on another file?