Problem durch Übergabe von Kopie [std::transform]
-
hi,
folgender Code:
struct ConvertChar2MorseCode { explicit ConvertChar2MorseCode(const CMorseCode& MC) : m_MorseCodeTable(MC) {} std::string operator()(char c) { std::string MorseCode = m_MorseCodeTable.getMorseString(c); updateStatistics(c); return MorseCode; } void updateStatistics(char c) { if(' ' == c) { ++m_ConversionStatistics.words; return; } if(m_MorseCodeTable.IsIn(c)) { ++m_ConversionStatistics.characteres; } } const stats& getStatistics() const {return m_ConversionStatistics;} private: CMorseCode m_MorseCodeTable; stats m_ConversionStatistics; }; void encodeMorseFile(std::istream& input, std::ostream& output) { std::istreambuf_iterator<char> inpos(input); std::istreambuf_iterator<char> endpos; std::ostream_iterator<std::string> outIter(output, ""); ConvertChar2MorseCode cc2mc((CMorseCode())); std::transform(inpos, endpos, outIter, cc2mc);//cc2mc kopie const stats& Statistic = cc2mc.getStatistics(); std::cout << Statistic; }
stats ist ein struct aus zwei int Variablen und einer Ausgabeoperator.
Da ich nun mitbekommen hab das der functor bei std::transform als Kopie übergeben wird, existieren ja später die Statistic Werte nicht mehr.
Was müsste ich jetzt machen um in der Funktion encodeMorseFile diese Werte doch noch zu erhalten?Heimwerkering
P.S. - sollte etwas unklar sein, bitte nachfragen
P.P.S. - jaja ich weiß mieser Topic Titel (mir viel nur auf die schnelle nicht besseres ein)
-
Okay hat sich schon erledigt
- man steht aber auch manchmal auf dem schlauchHeimwerkerking