【发布时间】:2023-03-07 11:05:01
【问题描述】:
有人可以告诉我为什么运行此程序会出现分段错误吗?我尝试了一个指向对象数组的数组的指针,我该如何解决这个问题? sf::Vector2 类的声明可以在这里找到:http://www.sfml-dev.org/documentation/1.6/classsf_1_1Vector2.php
非常感谢。
#include <SFML/System/Vector2.hpp>
#include <iostream>
class Tet
{
public:
Tet();
private:
static sf::Vector2 <int> I[4];
static sf::Vector2 <int> J[4];
static sf::Vector2 <int> *types[2];
};
sf::Vector2 <int> Tet::I[4] = {sf::Vector2 <int>(0,1),
sf::Vector2 <int>(1,1),
sf::Vector2 <int>(2,1),
sf::Vector2 <int>(3,1)};
sf::Vector2 <int> Tet::J[4] = {sf::Vector2 <int>(1,1),
sf::Vector2 <int>(2,1),
sf::Vector2 <int>(3,1),
sf::Vector2 <int>(3,2)};
sf::Vector2 <int>* Tet::types[2] = { I,J };
Tet::Tet()
{
//trying to print out x member of first vector of I
std::cout << (*(*(types))).x << std::endl;
}
main()
{
Tet t = Tet();
}
编辑:g++ 编译器
【问题讨论】:
-
什么是 sf::Vector2,它是如何实现的?只看代码就会认为它应该可以工作。你能不能用更广泛可用的类型来重现它,因为没有访问 sf::Vector2 没有人能够接受它并尝试一下。
-
正如预期的那样,一个简单的示例(将 sf::Vector2
替换为 char)似乎可以工作。 -
手动拖入
Vector2实现,这在 Visual Studio 2010 下可以正常工作。您使用的是什么编译器?