首先,我对媒介本身还很陌生,所以请多多包涵。

我正在尝试制作一个包含2个字符串,一个int和一个float的向量。

这是我的结构:

struct OpiskelijanTiedot {

   string etunimi;
   string sukunimi;
   int HarjMaara;
   float Arvosana;

   OpiskelijanTiedot() : etunimi(), sukunimi(), HarjMaara(), Arvosana() {}
   OpiskelijanTiedot(string const& e, string const& s, int const& h, float const& a) :
         etunimi(e), sukunimi(s), HarjMaara(h), Arvosana(a) {}
   bool operator<(OpiskelijanTiedot const& rhs) const
   {
      return sukunimi < rhs.sukunimi;
   }
};


然后在Main.cpp中,我做了一个像这样的向量:vector<OpiskelijanTiedot> Tiedot;

在我的functions.cpp中,我有这个:

void oppilas(vector<OpiskelijanTiedot>Tiedot, int laskuri) {
   OpiskelijanTiedot temp;
   cout << "Etunimi: ";
   cin.ignore();
   cin >> temp.etunimi;
   Tiedot.push_back(temp.etunimi);
   cout << "Sukunimi: ";
   cin >> temp.sukunimi;
   Tiedot.push_back(temp.sukunimi);
   cout << "Tehtyjen harjoitustehtavien maara: ";
   cin >> temp.HarjMaara;
   Tiedot.push_back(temp.HarjMaara);
   cout << "Harjoitustyon arvosana: ";
   cin >> temp.Arvosana;
   Tiedot.push_back(temp.Arvosana);
}


所以我得到这个错误:


  说明项目文件行
  错误C2664
  '无效
  std :: vector> :: push_back(const
  OpiskelijanTiedot&)':无法将参数1从'float'转换为
  'OpiskelijanTiedot &&'


我一直在寻找这个问题很长时间了,无法摆脱它,因此非常感谢您提供的任何帮助或为我指明正确的方向。我猜测它不知道什么是字符串int等有问题,但是我无法弄清楚。谢谢!

最佳答案

Tiedot是OpiskelijanTiedot的向量,而temp.Arvosana是浮点数。

你应该做

Tiedot.push_back(temp)

09-16 08:45