과부하, 그것은 가장 감소 프로그램 :오류가 연산자 '>>'내 코드를 확인, >> 연산자를 오버로드하는 것을 시도하고있다
#include <iostream>
#include <string>
using namespace std;
class MyClass{
private:
string bar;
int foo;
public:
MyClass(){
bar="";
foo=0;
};
istream& operator>>(istream& is){
is >> bar >> foo;
return is;
};
ostream& operator<<(ostream& os){
os << bar << foo;
return os;
};
~MyClass(){};
};
int main()
{
MyClass* a = new MyClass();
cin >> *a;
delete a;
return 0;
}
이 코드 는를 컴파일되지 않습니다, 검색 좀했습니다 내 질문을 게시하기 전에 문제가 가장 귀찮은 구문 일 수 있다는 것을 알았지 만 문제를 해결하는 방법을 상상할 수는 없습니다.
첫째 : 문제입니다
어쨌든, 내가 컴파일 할 때, 컴파일러가 발생, 모르는
다음error: no match for ‘operator>>’ (operand types are ‘std::istream {aka std::basic_istream<char>}’ and ‘MyClass’)
cin >> *a;
~~~~^~~~~
, 유형이 int로 변환하는 시도 후, 이중, 문자 등이 발생 :
/usr/include/c++/6.1.1/istream:924:5: nota: candidate:
std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&&, _Tp&) [con _CharT = char; _Traits = std::char_traits<char>; _Tp = MyClass] <coincidencia cercana>
operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
^~~~~~~~
/usr/include/c++/6.1.1/istream:924:5: nota: conversion of argument 1 would be ill-formed:
error: no se puede unir el l-valor ‘std::istream {aka std::basic_istream<char>}’ a ‘std::basic_istream<char>&&’
cin >> *a;
나는이 문제를 해결하기 위해 무엇을 할 수 있는가?
누군가 친구가 필요합니다. :-) – paxdiablo