私は過負荷をしようとoperator<<
しています、そしてそれは私を夢中にさせました:
std::ostream& operator<<(std::ostream & lhs, TuringMachine::TRTable& rhs){
for(auto& statePtr : rhs){
lhs << statePtr.first->getLabel().toStdString();
for(auto& charPtr: statePtr.second){
//lhs << '\t';
lhs << charPtr.first.toAscii() ;
//lhs << 'b ';
lhs << charPtr.second.getState().getLabel().toStdString() << std::endl;
}
}
return lhs;
}
TRTable
です。typedef
_ したがって、への呼び出しとしてそのラベルがあります。std::map<State*, std::multimap<QChar, Transition>>
State
QString
.toStdString()
別のクラスでは、私はビーイングで電話std::cout << machine->table << std::endl;
します、そしてこれは私に与えますmachine
TuringMachine*
error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
私は何が間違っているのですか?なぜ&&
ですか?
編集:g++4.6および-std=c++0x