麻烦在C ++头文件中使用元组<sf :: texture,bool =“”> </sf :: texture,>

时间:2014-10-06 18:49:44

标签: c++ sfml

问题代码

我的functions.cpp文件中有以下功能:

tuple<sf::Texture, bool> load_texture(string texture_path){
    bool success = true;
    sf::Texture texture;
    if (!texture.loadFromFile(texture_path)){
        cout << "Texture failed to load" << endl;
        success = false;
    }
    return make_tuple(texture, success);
}

我在SFML 2.1包中使用它,以便您了解sf::Texture的参考内容。

我正试图在我的header.h文件中对此函数进行正向定义,如下所示:

tuple<sf::Texture, bool> load_texture(string texture_path);

但我收到以下错误:

  • 错误1:syntax error : missing ';' before '<'
  • 错误2:missing type specifier - int assumed. Note: C++ does not support default-int
  • 错误3:'sf' : is not a class or namespace name

如果这很荒谬,我很抱歉,但我是标题游戏的新手。

我的问题

我需要在头文件中包含什么才能使用元组,我需要包含哪些内容以便编译器理解我对sf::的引用?我应该包括"SFML\Graphics.hpp"吗?

如果您需要更多信息或代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

  

“我正在尝试在我的header.h文件中对此函数进行前向定义,如下所示:”

tuple<sf::Texture, bool> load_texture(string texture_path);

这不是构成前向声明的真正原因,只是一个简单的函数声明

编译器错误指示的问题仅表示您在声明中缺少sf::Texture类的完整声明。

要解决此问题,您需要在header.h文件中#include <Texture.hpp>。当然,你还需要#include <tuple>


<强> header.h

#if !defined(HEADER_H__)
#define HEADER_H__
#include <Texture.hpp>
#include <tuple>
#include <string>

std::tuple<sf::Texture, bool> load_texture(std::string texture_path);
#endif // HEADER_H__

<强> functions.cpp

#include "header.h"

std::tuple<sf::Texture, bool> load_texture(std::string texture_path) {
    bool success = true;
    sf::Texture texture;
    if (!texture.loadFromFile(texture_path)) {
        cout << "Texture failed to load" << endl;
        success = false;
    }
    return make_tuple(texture, success);
}