我在执行简单的动态内存分配时遇到了一些问题,可能对其进行了简单的修复,但是我一直想弄清楚它已经存在了一段时间,但没有发现任何东西。我收到“ this-> layers was nullptr”,我知道layers [0]是nullptr,但是在定义它时出现错误。我在名为map的类中定义所有这些内容,并在main.cpp
中调用该类注意:我正在使用一个名为tinxml2的库和一个名为sfml的库,但是我真的认为问题不必对它们做任何事情,因此我没有将它们放在标签中
Layer.h
#pragma once
#include <iostream>
#include <SFML\Graphics.hpp>
#include "tinyxml2.h"
class Layer : sf::RenderTexture
{
public:
Layer(tinyxml2::XMLElement* layer);
const char* GetID() { return layer->Attribute("id"); }
~Layer();
private:
tinyxml2::XMLElement* layer;
};
Layer.cpp
#include "Layer.h"
Layer::Layer(tinyxml2::XMLElement* layer)
{
this->layer = layer;
}
Layer::~Layer()
{
}
我在map.h中将图层定义为Layer** layers
并在map.cpp中
layers[0] = new Layer(pMap->FirstChildElement("layer"));
std::cout << layers[0]->GetID() << std::endl;
重要的是要说我确定可以成功创建对象,因为如果我尝试不创建任何元素就可以正常使用它。