C++ Primer Plus 第十四章Student类
class Student : private std::string, private std::valarray<double>
{
private:
typedef std::valarray<double> arraydb;
ostream& arr_out(ostream& os) const;
public:
friend ostream& operator<<(ostream& os, Student& stu);
};
ostream& operator<<(ostream& os, const Student& stu)
{
os << "Scores for " << (const string&)stu << ":\n";
stu.arr_out(os);
return os;
}
在vs 2022 C++14, 编译提示arr_out是私有成员无法访问,但是arr_out放到public里面又是无法解析的外部符号:
LNK2019 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Student &)" (??6@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AEAV01@AEAVStudent@@@Z),函数 main 中引用了该符号 practice D:\cprogram\solution\practice\test.obj 1