Как реализовать конструктор вложенных классов в исходном файле

В моем основном классе есть вложенный класс с именем cell. IC

class Something{
  class Cell
    {
    public:
        int get_row_Number();
        void set_row_Number(int set);

        char get_position_Letter();
        static void set_position_Letter(char set);

        void set_whohasit(char set);
        char get_whohasit();

        Cell(int row,char letter,char whohasit);

    private:
        char position_Letter;
        int row_Number;
        char whohasit;
    };
};

Я хочу реализовать вложенный конструктор класса в.cpp файле

Something::Cell Cell(int row,char letter,char whohasit){
    Something::Cell::set_position_Letter(letter);
    Something::Cell::set_row_Number(row);
    Something::Cell::set_whohasit(whohasit);
}

Но это неправильно. Сначала я предположил, что правильным будет Something::Cell::Something::Cell, но я тоже не думаю, что это правда.

2 ответа

Решение

Вы почти там. Это так просто, как:

Something::Cell::Cell(int row,char letter,char whohasit){
    Something::Cell::set_position_Letter(letter);
    Something::Cell::set_row_Number(row);
    Something::Cell::set_whohasit(whohasit);
}

Но на самом деле я настоятельно рекомендую вам использовать инициализаторы, а не создавать неинициализированные члены, а затем присваивать им:

Something::Cell::Cell(int row, char letter, char whohasit)
    :position_Letter(letter)
    ,row_Number(row)
    ,whohasit(whohasit)
{}

Вам нужно сделать ваш внутренний класс общедоступным, и метод set_Position_Letter не может быть статическим, потому что char position_Letter не является статичным (вот заголовок):

class Something
{
public:
    class Cell {
    public:
        int get_row_Number();
        void set_row_Number(int set);

        char get_position_Letter();
        void set_position_Letter(char set);

        void set_whohasit(char set);
        char get_whohasit();

        Cell(int row,char letter,char whohasit);

    private:
        char position_Letter;
        int row_Number;
        char whohasit;
    };
};

Это cpp:

Something::Cell::Cell(int row, char letter, char whohasit) {
    set_position_Letter(letter);
    set_row_Number(row);
    set_whohasit(whohasit);
}

void Something::Cell::set_position_Letter(char set) {
    this->position_Letter = set;
}

void Something::Cell::set_whohasit(char set) {
    this->whohasit = set;
}

void Something::Cell::set_row_Number(int set) {
    this->row_Number = set;
}
Другие вопросы по тегам