C++ c++;指向另一个类错误的指针;没有与这些操作数匹配的运算符。”;
编辑* 我很笨。。。谢谢你帮我解决了这个问题。 * 在我的car类中,下面的代码不断给我一个错误,因为Your print()函数已经将输出发送到C++ c++;指向另一个类错误的指针;没有与这些操作数匹配的运算符。”;,c++,compiler-errors,operators,C++,Compiler Errors,Operators,编辑* 我很笨。。。谢谢你帮我解决了这个问题。 * 在我的car类中,下面的代码不断给我一个错误,因为Your print()函数已经将输出发送到cout,因此无需再次尝试发送。而不是 cout << "Driver: " << driver->print(); cout您的print()函数已将输出发送到cout,因此无需再次尝试发送。而不是 cout << "Driver: " << driver->print(); cO
cout
,因此无需再次尝试发送。而不是
cout << "Driver: " << driver->print();
cout您的print()函数已将输出发送到cout
,因此无需再次尝试发送。而不是
cout << "Driver: " << driver->print();
<代码> cOUT> P>这样做的C++方法是实现代码> STD::OSRoo&。这样做的C++方法是实现<代码> STD::oSoo&成员函数<代码>打印< /COD>返回“代码>空格< /代码>。不能将
无效
插入流中。如果更改打印函数以获取流引用并添加调用打印的重载运算符,则只需将对象本身插入流中即可;那会更地道
template <class Elem, class Traits>
void Car::print(std::ostream<Elem, Traits>& out) {
out << "Model: " << model << '\n';
out << "Driver: " << *driver;
out << "Owner: " << *owner;
}
template <class Elem, class Traits>
std::ostream<Elem, Traits>& out, const Car& car) {
return out << car;
}
模板
作废Car::打印(标准::ostream&out){
out成员函数print
returnvoid
。不能将void
插入流中。如果将打印函数更改为获取流引用并添加调用print的重载运算符,则只需将对象本身插入流中即可;这将更为惯用
template <class Elem, class Traits>
void Car::print(std::ostream<Elem, Traits>& out) {
out << "Model: " << model << '\n';
out << "Driver: " << *driver;
out << "Owner: " << *owner;
}
template <class Elem, class Traits>
std::ostream<Elem, Traits>& out, const Car& car) {
return out << car;
}
模板
作废Car::打印(标准::ostream&out){
你称编译器错误为“bugs”?你称编译器错误为“bugs”?toString()这不是java。规范的方法是实现std::ostream&operator@juanchopanza谢谢你提醒我,我相应地修改了答案。@juanchopanza:但请注意,C++11在字符串中添加了std::to_string
,这实际上是有用的,至少对某些类型是有用的。@JerryCoffin当然,但我更喜欢使用output stream运算符。如果它在实现中使用字符串则是另一回事。@juanchopanza:哦,我对此没有任何意见(事实上,您的答案中有一张赞成票来自我)。toString()这不是java。规范的方法是实现std::ostream&operator@juanchopanza谢谢你提醒我,我相应地修改了答案。@juanchopanza:但请注意,C++11在字符串中添加了std::to_string
,这实际上是有用的,至少对某些类型是有用的。@JerryCoffin当然,但我更喜欢使用output stream运算符。如果它在实现中使用字符串则是另一回事。@juanchopanza:哦,我对此没有异议(事实上,你的答案中有一张赞成票来自我).Wow谢谢。之后我可能应该睡一会儿lol。Wow谢谢。之后我可能应该睡一会儿lol。你确定在这种情况下可以返回referencestd::string&
吗?你确定在这种情况下可以返回referencestd::string&
?
cout << "Driver: " << driver->print();
cout << "Driver: " << driver;
#include <iostream>
std::ostream& operator<<(std::ostream& o, const Person& p) {
return o << "Name: " << p.getName() << " Age: " << p.getAge();
}
Person p("Bob", 23);
std::cout << p << "\n";
template <class Elem, class Traits>
void Car::print(std::ostream<Elem, Traits>& out) {
out << "Model: " << model << '\n';
out << "Driver: " << *driver;
out << "Owner: " << *owner;
}
template <class Elem, class Traits>
std::ostream<Elem, Traits>& out, const Car& car) {
return out << car;
}
const std::string& Person::print() const
{
return "Name " + name + "\n" + "Age " + age + "\n";
}