gpt4 book ai didi

c++ - 重载运算符 >>()

转载 作者:行者123 更新时间:2023-11-30 03:09:46 31 4
gpt4 key购买 nike

我对 C++ 的了解很少,因为我只上了几门课。我理解使用友元函数为具有 x、y 实例变量的 Point 对象的“简单书籍示例”重载输入、输出流运算符的基本情况。我现在正在看一个真实的项目,试图理解某人写的内容并遇到错误:

error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char [2]' (or there is no acceptable conversion)
1> c:\program files\microsoft visual studio 9.0\vc\include\istream(1000): could be 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)' [found using argument-dependent lookup]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]

菜鸟问题(1),谁能解释一下 basic_istream 是什么?错误指向:

template<class _Traits> inline
basic_istream<char, _Traits>& __CLRCALL_OR_CDECL operator>>(
basic_istream<char, _Traits>& _Istr, signed char *_Str)
{ // extract a signed char NTBS
return (_Istr >> (char *)_Str);
}

错误指向的另一部分是:

void input(std::istream &in = std::cin)
{in >> "(" >> X >> "," >> Y >> "," >> Z >> ")" ; }

inline friend std::istream& operator >> (std::istream& in, Coord &val)
{val.input(in); return in; };

以我有限的知识不确定错误是什么。它似乎在提示内联 friend std::istream& operator>> 函数中的类型不正确,因为 basic_istream 模板中有问题(我不确定那里发生了什么)。任何建议将不胜感激。谢谢!

最佳答案

我很确定你不能像那样参数化 istream 提取。不过,被证明是错误的会很酷 :)

试试这个:

void input(std::istream &in = std::cin)
{
char t;
in >> t >> X >> t >> Y >> t >> Z >> t;
}

关于c++ - 重载运算符 >>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858043/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com