正确使用所有其他文件中使用1个变量的方法
Correct way to use 1 variable in all other files
我正在用C 制作游戏。我正在使用SFML。我有连接并共享/使用变量的game.h and game.cpp文件。
我想在其他文件中使用其中一些变量。我尝试了示例:
extern int variable;
它运行良好。问题是当我尝试将其做到这一点时:
sf::Texture hoverTexture;
std::vector<sf::Sprite> Hover_Tiles;
sf::Sprite hover;
并在其他CPP文件中使用这些精灵/纹理。只是试图将我的代码分解为几个文件,以使其更容易阅读。因此,我的问题是,可以使这些提到的精灵/纹理全局正确地在其他文件中使用它们。什么是最好的方法。如果不可能,我该怎么办?
如何在其他文件中使用这些精灵/纹理。如何连接它们?至少将我指向某个地方。谢谢。
编辑:
毕竟包括在游戏之上。H
extern std::vector<sf::Sprite> Tiles;
extern sf::Sprite tile;
extern sf::Texture seaTexture;
extern sf::Texture grassTexture;
extern sf::Texture rockTexture;
extern sf::Texture forestTexture;
extern sf::Texture hoverTexture;
extern std::vector<sf::Sprite> Hover_Tiles;
extern sf::Sprite hover;
extern sf::Texture hoverTexture2;
extern std::vector<sf::Sprite> Hover_Tiles2;
extern sf::Sprite hover2;
extern sf::Texture houseTexture;
extern std::vector<sf::Sprite> House_Tiles;
extern sf::Sprite house;
extern int map[20][10];
在其他文件映射中。cpp
#include "game.h"
#include "map.h"
#include "SFMLGraphics.hpp"
#include <vector>
std::vector<sf::Sprite> Tiles;
sf::Sprite tile;
sf::Texture seaTexture;
sf::Texture grassTexture;
sf::Texture rockTexture;
sf::Texture forestTexture;
sf::Texture hoverTexture;
std::vector<sf::Sprite> Hover_Tiles;
sf::Sprite hover;
sf::Texture hoverTexture2;
std::vector<sf::Sprite> Hover_Tiles2;
sf::Sprite hover2;
sf::Texture houseTexture;
std::vector<sf::Sprite> House_Tiles;
sf::Sprite house;
int map[20][10] =
{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 }
};
在同一映射中。cppi制作了void函数,该功能首先在map.h中定义。该功能具有一些在game.cpp中效果很好的代码(如果我发布的此代码在game.h中)。我也有例外的问题:
Exception thrown at 0x7749B2E3 (ntdll.dll) in App.exe: 0xC0000005:
Access violation writing location 0x00000004.
在map.cpp线上:
sf::Texture seaTexture;
我希望我发布的这个代码有助于解决问题。当我使用外部将这些精灵/纹理/变量转移到其他文件中时,它将无法使用,但是所有内容都(game.h and game.cpp)效果很好。
在声明外部变量之前,您需要包括LIB标头。否则编译器不知道什么是类。
otherfile.h
#ifndef OF_H_
#define OF_H_
#include <Texture.hpp>
#include <Sprite.hpp>
#include <vector>
extern sf::Texture hoverTexture;
extern std::vector<sf::Sprite> Hover_Tiles;
extern sf::Sprite hover;
#endif
game.cpp
#include <game.h>
sf::Texture hoverTexture;
std::vector<sf::Sprite> Hover_Tiles;
sf::Sprite hover;
相关文章:
- 声明 2 个变量
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 在C++的一行中初始化多个变量
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 如何在单行语句中C++递减多个变量?
- 命令行参数,cant 或两个变量
- 如何创建具有多个值的多个变量
- 在 for 循环中更新两个变量时遇到问题C++
- 可视化C++从文件中保存/读取多个变量
- 一行输入到多个变量
- C++ 编译时在两个变量之间交替
- C++ 如何在包含两个变量的结构中存储与变量不同数量的值?
- 需要使用 3 个变量在没有函数的情况下进行比较
- 如何有效地实现将向量的数据分配给多个变量?
- 交换N个变量
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 如何将几个变量复制到其他变量
- 读取多个字符串行,c++ 读取多个变量;
- 为什么一个接一个声明的两个变量在内存中不相邻?
- 在 c++ 中将多个变量设置为相同的值