所以我正在使用C ++ Primer,并且试图修改本书的示例之一,以使用一个结构体和一个使用所述结构体的向量来存储,然后调用所述向量的元素进行打印。
为此,我使用emplace_back()
并将其传递给两个整数参数以满足结构中的两个整数声明,然后将该结构放入向量中(我相信)。
但是,在尝试调试程序时,我不断收到“错误C2661:'matrix :: matrix':没有重载的函数需要2个参数”。我不太确定发生了什么,而且我似乎也无法理解对遇到相同问题的人的其他解释。该程序运行良好,因为它写在书上(它可以编译并且不会死),但是我试图将我在Accelerated C ++中学到的东西整合到Primer中。
帮助初学者吗?这就是我所拥有的:
#include <iostream>
#include <vector>
struct matrix //create struct
{
int value;
int count;
};
void printRepeats(std::vector<matrix>& e, std::vector<matrix>::size_type& r)
{
std::cout << e[r].value << e[r].count; // print elements of struct
}
int main()
{
std::vector<matrix> repeats;
int currVal = 0;
int val = 0;
if (std::cin >> currVal)
{
int cnt = 0;
while (std::cin >> val)
{
if (val == currVal)
{
++cnt;
}
else
{
repeats.emplace_back(currVal, cnt);
currVal = val;
cnt = 0;
}
}
}
for (std::vector<matrix>::size_type r(0); r != repeats.size(); r++)
{
printRepeats(repeats, r);
}
std::cin.get();
std::cin.get();
return 0;
}
答案 0 :(得分:2)
@Borgleader当然是正确的。但是博格总是如此。
因此,要对其进行编译,只需更改以下内容即可:
struct matrix
{
int value;
int count;
};
对此:
struct matrix
{
matrix (int value, int count) : value (value), count (count) {} // constructor
int value;
int count;
};
然后离开。
在Wandbox上查看:https://wandbox.org/permlink/zzRRzdQjjG1vm4tM