C++ Push_back vector<struct>MyVector 和错误 C2664

标签 c++ vector struct push-back

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

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

这是我的结构:

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 :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);
}

所以我得到这个错误:

Description Project File Line Error C2664
'void std::vector>::push_back(const OpiskelijanTiedot &)': cannot convert argument 1 from 'float' to 'OpiskelijanTiedot &&'

我已经搜索这个问题很长时间了,但无法解决这个问题,所以非常感谢任何帮助或指出正确的方向。我猜它在某种程度上有问题,我没有告诉什么是 string int 等,但我无法弄清楚。谢谢!

最佳答案

Tiedot 是 OpiskelijanTiedot 的 vector ,而 temp.Arvosana 是一个 float 。

你应该做的

Tiedot.push_back(temp)

关于C++ Push_back vector<struct>MyVector 和错误 C2664,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33968837/

相关文章:

指针 vector 中的 C++ 垃圾值

结构成员对齐困惑

c++ - 在C++中实现一个定时器

c++ - 防止从 Dll C++ 注入(inject) Dll

c++ - 是否可以在不复制的情况下从 std::vector 中提取数据? (并让 vector 忘记它)

c++ - 为什么插入 set<vector<string>> 这么慢?

json - 为什么 json.Unmarshal 在 golang 中追加一个新指针后会更改指针值?

c malloc 指向结构数组的指针

c++ - 在 C++ 中构造对象的不同方法

c++ - "constant"复杂度的真正含义是什么?时间?复制/移动的数量?