我在尝试从另一个类访问我的主类中使用的数组时遇到问题。我的应用程序是用于制作 2D 平台游戏的编辑器 - 它基本上允许您放置 2D 资产(片段)并构建关卡。
我的主类处理一组地图分段类(数组中的每个分段类都保存了地图上分段的位置、比例和旋转等信息)并将它们绘制到屏幕上。
我有一个单独的类,它基本上是一个面板(可拖动,并且可以调整大小,就像您在 Photoshop 之类的东西中找到的那样),它在主类中初始化,用于从文件中绘制可用段的网格。我需要的是能够单击其中一个段,然后将信息添加到主类中引用的数组中。
我有我的主类“Map”,它声明了一个数组:
map.h(简化)
class Map
{
public:
MapSegment* mapSeg[512];
};
然后,当我创建面板以显示可用段时,我尝试发送该数组的引用,如下所示:
Panel* segmentPane = new SegmentPanel(sf::Rect<float>(200,200,250,200), mapSeg);
Segment Panel报头形成如下:
class SegmentPanel : public Panel
{
public:
SegmentPanel(sf::Rect<float> _position, MapSegment* mapSeg[512];);
void Update();
void Draw(sf::RenderWindow & renderWindow);
void ReadSegments();
private:
std::vector<SegmentDefinition *> segDef;
MapSegment* mapSeg[512];
};
和 SegmentPanel cpp:
SegmentPanel::SegmentPanel(sf::Rect<float> _position, MapSegment* mapSeg[512])
: Panel(_position)
{
panelTitle = "Segment Selection";
}
void SegmentPanel::Update()
{
// Update segments
}
void SegmentPanel::Draw(sf::RenderWindow & renderWindow)
{
// Draw default panel items
Panel::Draw(renderWindow);
// Draw segments
}
但是,从 SegmentPanel.cpp 类向数组添加元素似乎并没有反映在我的主 Main 类中 - 它似乎在内存中创建了一个新数组。
在使用 C# 之后,我对 C++ 还是很陌生!