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.字符串引用