#include <cstdlib> #include <string> #include <sstream> #include <iostream> #include <vector> using namespace std; class Luokka { public: Luokka(); Luokka( int luku1, int luku2 ); Luokka lisaa( const Luokka& lisattava ) const; private: struct Lisattavat { int luku1; int luku2; }; vector < Lisattavat > talle; }; Luokka Luokka::lisaa( const Luokka& lisattava ) const { talle.push_back(lisattava); Luokka uusi; return uusi; }
Miten saan tuon lisattava:n talle-vectoriin?
Antaa tälläista erroria:
no matching function for call to 'std::vector<Luokka::Lisattavat>::push_back(const Luokka&) const' .../vector:132: note: candidates are: void std::vector<T>::push_back(const T&) [with T = Luokka::Lisattavat]
Yrität lisätä Luokka
-tyyppistä oliota vektoriin, jonka alkioiden tyyppi on eri (Lisattavat
). Lisäksi lisaa
on const
-funktio, joten sen ei pitäisi muuttaa jäsenmuuttujia, mutta se yrittää kuitenkin työntää vektoriin uuden olion.
Myöskään ei ole järkeä palauttaa kyseisestä funktiosta uutta Luokka-tyyppiä. Uusi Lisattava olisi ehkä ymmärrettävä, mutta ei siitäkään minusta erityistä hyötyä olisi. Jos kerrot, mitä on tarkoitus tehdä, voit saada hyviä neuvoja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.