我想在我的一门课中重载运算符<签名如下所示:

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/

10-15 00:32