我的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);
但我收到以下错误:
syntax error : missing ';' before '<'
missing type specifier - int assumed. Note: C++ does not support default-int
'sf' : is not a class or namespace name
如果这很荒谬,我很抱歉,但我是标题游戏的新手。
我需要在头文件中包含什么才能使用元组,我需要包含哪些内容以便编译器理解我对sf::
的引用?我应该包括"SFML\Graphics.hpp"
吗?
如果您需要更多信息或代码,请告诉我。
答案 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);
}