Массив пар, бессмысленный вывод (нераспределенная память?) [Закрыто]

Исходя из Java, я пытался реализовать простую игру Battleships на C ++, но уже застрял в этом массиве:

#include 
#include 

using namespace std;

class Ship{
    private:
        int length;
        bool direction; //false = left, true = down
        pair  coords[];
    public:
        Ship(int x, int y, bool, int);
        void printship();
};

Ship::Ship(int x, int y, bool dir, int l){ 
    pair  coords[l];
    length = l;
    if (dir){
        for (int i = 0; i < l; i++){
            coords[i] = make_pair(x, y+i);
        }   
    }   
    else{
        for (int i = 0; i < l; i++){
            coords[i] = make_pair(x+i, y); 
        }   
    }   
}
void Ship::printship(){
    for (int i = 0; i < length; i++){
        cout < "x: " < coords[i].first < ", y: " < coords[i].second < endl;
    }   
}

int main(){
    Ship tests(2,3,true,3);
    tests.printship();
    return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос