繁体   English   中英

运算符重载时出错(错误:“运算符&lt;&lt;”不匹配(操作数类型为“std::basic_ostream”)<char> &#39; 和 &#39;const 字符 [2]&#39;)

[英]Error while operator overloading (error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const char [2]’)

#ifndef NAME_H
#define NAME_H
#include <string>                                // For string class

class Name
{
private:
 std::string first{};
 std::string second{};

public:
  Name(const std::string& name1, const std::string& name2) : first(name1), second(name2){}
  Name()=default;
  std::string get_first() const {return first;}
  std::string get_second() const { return second; }

  friend std::istream& operator>>(std::istream& in, Name& name);
  friend std::ostream& operator<<(std::ostream& out, const Name& name);
};

// Stream input for Name objects
inline std::istream& operator>>(std::istream& in, Name& name)
{
  return in >> name.first >> name.second;
}

// Stream output for Name objects
inline std::ostream& operator<<(std::ostream& out,  const Name& name)
{  
   //My error is here while I am adding  " " in the overload
   return out << name.first << " " << name.second;
}

我想重载std::ostream<<运算符,它将 Name 对象作为我的右手参数。

现在,当我在重载中添加“”时..它向我显示了错误

错误是这样的:

 error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘const char [2]’)
   return out << name.first << " " << name.second;
                            ^

感谢您上传所有详细信息 - 现在可以回答问题了。

编译器无法访问您提供的重载,因为istreamostream在编译时不是完整类型。

你需要写

#include <iostream>

纠正这一点。 有时编译器诊断是迟钝的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:“operator&lt;&lt;”不匹配(操作数类型为“std::basic_ostream”<char> &#39; 出现错误:'operator&lt;&lt;' 不匹配(操作数类型为 'std::basic_ostream<char> ' 和 'Complex') 尽管重载了 &lt;&lt; 运算符</char> 错误:“operator&lt;&lt;”不匹配(操作数类型为“std::ostream {aka std::basic_ostream”<char> }&#39; 和 &#39;void&#39;) 错误:'operator&lt;&lt;' 不匹配(操作数类型是 'std::ostream' {aka 'std::basic_ostream<char> '}</char> 错误:'operator&lt;&lt;' 不匹配(操作数类型是 'std::ostream {aka std::basic_ostream<char> }'和'列表')</char> 如何修复错误:'operator&lt;&lt;' 不匹配(操作数类型为 'std::ostream {aka std::basic_ostream<char> }' 和 'void')同时使用字符串和堆栈</char> 错误:'operator<<' 不匹配(操作数类型为'std::ostream {aka std::basic_ostream<char> }' 和 'std::ostream {aka std::basic_ostream<char> }')</char></char> 错误:'operator&lt;&lt;' 不匹配(操作数类型是 'std::ostream' {aka 'std::basic_ostream<char> '} 和 'std::_List_iterator<int> ')</int></char> \\ main.cpp | 103 |错误:“ operator &lt;&lt;”不匹配(操作数类型为“ std :: ostream {aka std :: basic_ostream <char> }”和“人”) 'operator&lt;&lt;' 不匹配(操作数类型为 'std::ostream' {aka 'std::basic_ostream<char> '} 和 'const std::type_index')</char>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM