C++ 类成员函数调用类友元函数(所有相同的类)是否可能?

C++ 类成员函数调用类友元函数(所有相同的类)是否可能?,c++,class,member,friend-function,C++,Class,Member,Friend Function,我有一个相当基本的类,包含成员函数和私有数据,但我希望print函数不是类成员函数的一部分。我将它从类中删除并声明为友元,当直接从main.cpp调用它时,它可以工作,但当类成员函数在内部调用它时,它不会被声明。我知道作为一个朋友,它可以访问数据,但我如何使其可用于成员功能?可能吗 //HEADER FILE #include<iostream> using namespace std; static const int ArrSize=3; class TicTacToe

我有一个相当基本的类,包含成员函数和私有数据,但我希望print函数不是类成员函数的一部分。我将它从类中删除并声明为友元,当直接从main.cpp调用它时,它可以工作,但当类成员函数在内部调用它时,它不会被声明。我知道作为一个朋友,它可以访问数据,但我如何使其可用于成员功能?可能吗

//HEADER FILE
#include<iostream>

using namespace std;

static const int ArrSize=3;

class TicTacToe
  {
    //friends
    friend void printBoard(char [][ArrSize]);

    //member functions
    public:
    void makeboard();
    void isValidMove();
    void isWinner();
    void getMove();

    //data members
    private:
    int pRow, pCol, player;
    bool validMove, winner;
    char TTTarray[ArrSize][ArrSize];
};

void TicTacToe::getMove()
{
  //  some internal code for determining if proper input
  // calls printBoard() to show what move was made.
  printBoard(0);

void printBoard(char TTTarray[][ArrSize])
{
  int i;
  for(i=0;i<3;i++)
    {
      cout << TTTarray[i][0] << " " << TTTarray[i][0] << " " << TTTarray[i][2] << endl;
    }
  }

  // MAIN.CPP FILE
  #include <iostream>
  #include "TicTacToe.h"

  using namespace std;

  int main()
  {
    TicTacToe a;
    a.makeBoard();
    printBoard(0);
    a.getMove();

    return 0;
   }

在getMove中使用printBoard时,printBoard实际上还没有被声明。您需要在getMove之前移动printBoard的定义,该定义也会声明,或者至少添加一个声明

void printBoard(char [][ArrSize]);
在你在任何地方使用它之前,也在课堂之外。此外,您的代码不会编译,因为至少有一个打字错误大写、小写makeBoard,makeBoard的定义缺失,getMove的右括号缺失。另外,也许您想用TTTarray而不是0调用printBoard


注:下次请用适当的缩进贴代码。很难检查括号是否像这样平衡…

这里肯定需要查看一些代码。它没有声明。您是否忘了在打印声明中包含头文件?Dmitri-感谢您的回复。不知道我是否知道你的意思。