cout的操作员问题

BSc*_*ker 3 c++ polymorphism overloading cout

我有一个简单的包类重载,所以我可以使用cout << packagename输出包数据.我还有两种数据类型,名称是字符串,运费是双倍的.

protected:
    string name;
    string address;
    double weight;
    double shippingcost;
Run Code Online (Sandbox Code Playgroud)
ostream &operator<<( ostream &output, const Package &package )
{
    output << "Package Information ---------------";
    output << "Recipient: " << package.name << endl;
    output << "Shipping Cost (including any applicable fees): " << package.shippingcost;
Run Code Online (Sandbox Code Playgroud)

问题出现在第4行(输出<<"收件人:...).我收到错误"no operator"<<"匹配这些操作数".但是,第5行很好.

我猜这与数据类型是包名称的字符串有关.有任何想法吗?

Unc*_*ens 14

您必须包含错误的字符串标头.<string.h>并且<string>是两个完全不同的标准标题.

#include <string.h> //or in C++ <cstring>
Run Code Online (Sandbox Code Playgroud)

这对于C风格空值终止的字符数组(喜欢的功能strcpy,strcmp等等).cstring引用

#include <string>
Run Code Online (Sandbox Code Playgroud)

这是为了std::string.字符串引用


sbi*_*sbi 5

你可能会失踪#include <string>.