2016-07-16 20 views
0

私はちょうどJavaからC++に来て、2D配列のコンストラクタにパラメータを渡す方法を知りました。例として、四角形を描くsquareというクラスがあり、四角形の2次元配列を持っていますが、私のコンストラクタはxとyを取るので、これらのパラメータを2次元配列に渡すにはどうすればいいですか?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

これはできません。

void func(int param[][]) {} 

これはないだろうが:

void func(int param[][1]) {} 

溶液は、ベクターを使用することであろう。

#include <vector> 
    vector<vector<Square>> grid; 
異なる多次元配列を扱うので、これはエラーを生じる++何らかの理由C用

配列と同じベクトルを使うこともできますが、name.pushback(object)を使って項目を追加することもできます。 Squareのコンストラクタをprivateにして、新しいインスタンスを作成する前にname.size()を使用しているインスタンスの数を確認するstatic関数を用意することもできます。これは難しい回避策ですが、機能します。

+0

静的関数が何であるかわからない場合は、パブリックメンバ関数の前に静的という単語を入れて使用できます。 Classname :: StaticFunctionname()を使用して呼び出すことができます。 – TheBeginningProgrammer

関連する問題