如何在下面的代码中命令:一个类成员函数用类参数调用非成员函数?

时间:2014-07-17 02:05:50

标签: c++

用下面的代码说明问题可能更好:

注意:只需查看注释的行并以#开头即可。

问题
如何订购#1,#2,#3和#4行?棘手的部分是#2取决于#3,但#3取决于#1 (补充说明:我被要求将构造函数保留在类体内。)

/* --------------------Header-------------------- */

struct Sales_data {                              /* #1: class definition */

  /* #2: member function (calling a non-member function) */
  Sales_data(std::istream &is){read(is, *this); 
};

std::string bookNo;
unsigned units_sold = {0};
double revenue {0.0 };
};

/* #3: declaration of the non-member function */
std::istream &read(std::istream &is, Sales_data &item) ; 


/* --------------------Source-------------------- */
/* #4: definition of the non-member function */
istream &read(istream &is, Sales_data &item) {           
  /* .... */
}

int main(){
  /* .... */
}

1 个答案:

答案 0 :(得分:5)

您可以转发声明结构和类。所以:

struct Sales_data;
std::istream& read(std::istream& is, Sales_data& item);

然后其他一切。