我想在我的一门课中重载运算符<签名如下所示:
friend std::ostream& operator<<(std::ostream& os, const Annuaire& obj)
当我尝试在.cpp文件中定义它时,它说operator <
这就是我在.cpp文件中定义它的方式:
std::ostream& Annuaire::operator<<(std::ostream& os, const Annuaire& obj){ // ... }
它与需要在头文件中定义的 friend 功能有关系吗?
最佳答案
可以在cpp文件中定义它,但是至少需要在头文件中声明它,否则,要使用它的所有位置都只会看到流本身给您的内容,而不是您的重载。
// .h and in class
friend std::ostream& operator<<(std::ostream& os, MyClass const& v);
// .cpp
std::ostream& operator<<(std::ostream& os, MyClass const& v){
// print it
}
关于c++ - C++- friend 功能是否必须在头文件中定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8373410/