C++ Friend Функция не имеет доступа к закрытым членам

Поэтому я пытаюсь сделать игру в шахматы (немного сложным для меня), и я являюсь пнем для этой части..

Итак, я сделал объект-кусок, и идея в том, что в основном игровом коде у меня есть массив частей, и я передаю адрес массива функции "InitilisePieces" и команде (черный или белый), и он должен назначить все кусочки. Поэтому я сделал эту функцию другом, чтобы получить доступ ко всем закрытым членам, и появляется сообщение об ошибке "недоступно", и я не понимаю, что не так, как я делал. Любая помощь будет более чем признательна!

Примечание: такие вещи, как State_ и _Location, а также структуры и перечисления, которые определены правильно и т. Д., Не проблема... (я не думаю)

Заголовочный файл содержит:

class   __Piece
{
private:

    State_              e_state;
    Piece_Type_         e_type;
    Team_               e_team;
    _Location           st_location;

    friend void         InitilisePieces     ( __Piece(*)[16], Team_);

public:
    __Piece             ();

};

Файл.cpp содержит:

void                    InitilisePieces     ( __Piece * pao_piece[16], Team_ )
{
    int         n_count;

    for ( n_count = 0; n_count < 16; n_count++ )
    {
        pao_piece[ n_count ]->e_state;
    }
}

ОБНОВИТЬ:

Спасибо за объяснения, и теперь я понимаю, в чем я ошибаюсь... так какой же должен быть параметр для передачи адреса массива __Piece?

1 ответ

Функция вашего друга и функция, которую вы определили позже, имеют то же имя, но разные подписи. Вы не определили функцию друга.

это

void InitilisePieces( __Piece(*)[16], Team_);

не такой как этот

void InitilisePieces( __Piece * pao_piece[16], Team_ )

Первый параметр первого является указателем на массив из 16 __Pieces. Первый параметр последнего настроен на __Piece** pao_pieceуказатель на указатель на __Piece, Другими словами, это так:

void InitilisePieces( __Piece** pao_piece, Team_ )

Также: следите за зарезервированными идентификаторами.

Другие вопросы по тегам