所以我刚刚从Java学习C ++,并想知道如何将参数传递给2D数组的构造函数。例如,我有一个名为square的类,它绘制了一个正方形,我有一个2D正方形数组,但是我的构造函数需要一个x和ay,那么我将如何将这些参数传递给2D数组?
// Main.cpp
#include <SFML\Graphics.hpp>
#include "Square.h"
Square grid[10][10];
int main()
{
sf::RenderWindow renderWindow(sf::VideoMode(800, 600), "Chess 2.0");
while (renderWindow.isOpen())
{
sf::Event evnt;
while (renderWindow.pollEvent(evnt))
{
if (evnt.type == sf::Event::Closed)
{
renderWindow.close();
}
}
renderWindow.clear(sf::Color::White);
/// RENDER HERE
for (int i = 0;i < 10;i++)
{
for (int j = 0;j < 10;j++)
{
// Init 2D array here
}
}
renderWindow.display();
}
return 0;
}
// Square class
Square::Square(float x, float y)
{
sf::RectangleShape rectangle(sf::Vector2f(100, 100));
rectangle.setPosition(x, y);
}
答案 0 :(得分:0)
你无法做到这一点。出于某种原因,C ++以不同方式处理多维数组,因此会产生错误:
void func(int param[][]) {}
虽然这不会:
void func(int param[][1]) {}
解决方案是使用矢量:
#include <vector>
vector<vector<Square>> grid;
您可以使用与数组相同的向量,但要添加使用name.pushback(object)的项目; 您可能还希望将Square构造函数设置为私有,并且具有一个静态函数,该函数在创建新实例之前使用name.size()检查有多少实例。这是一个艰难的解决方法,但它确实有效。