我有这样的代码: 请原谅我的波兰语名称,我希望这不是问题。如果你愿意,我可以更改它们。
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
//a few unimportant functions
void zamianaNaDziesietny(int podstawa, int liczba, int reszta[])
{
vector < int > cyfra;
cout <<"\n";
for(int a = reszta.size(); a > 0; a--)
{
cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
}
for(int a = 1; a < cyfra.size(); a++)
{
cyfra[0] += cyfra[a];
}
cout << cyfra[0];
}
void zamianaNaDziesietny(int podstawa, int liczba, int reszta[])
{
vector < int > cyfra;
cout <<"\n";
for(int a = reszta.size(); a > 0; a--) //request for member 'size' in 'reszta', which is of non-class type 'int*'
{
cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
}
for(int a = 1; a < cyfra.size(); a++)
{
cyfra[0] += cyfra[a];
}
cout << cyfra[0];
}
//another unimportant part of code
int main()
{
//unimportant stuff
zamianaZDziesietnego(podstawa, liczba);
zamianaNaDziesietny(podstawa, liczba, reszta);
return 0;
}
我不知道如何使用 vector “reszta”作为函数“zamiananaDziesietny”中的参数。 我应该输入什么让这个程序编译?
我收到 2 个错误: 其中之一是: “reszta”未在此范围内声明
这是一个数组...哦,好吧, vector 是一种数组...我想...我是菜鸟,所以我总是错的。
我可以在 main 中处理这个 vector ,添加“cout << reszta[0];” (只是在屏幕上写下这个 vector 的一个元素)在 main 中,就在这两个函数的归纳之间工作得很好。但我认为这个问题可以通过在 main 中设置这个 vector 来解决,然后它也将作为 zamianaZDziesietnego() 函数中的参数,但是......
我不知道如何在函数中使用 vector 作为参数。
我得到的第二个错误是: 请求'reszta'中的成员'size',它是非类类型'int *' 在第 32 行。
所以这是我的问题。 我已尝试以几种不同的方式输入此参数。
当我尝试: void zamianaNaDziesietny(int podstawa, int liczba, vector reszta[])
第二个错误改为: 请求'reszta'中的成员'size',它是指针类型'std::vector*'(也许你打算使用'->'?)|
下面几行也出现了新的错误:
'*(reszta + ((((sizetype)a) + -1u) * 12u)) * pow((double)podstawa, (double)(a + -1)) 中的 'operator*' 不匹配'|
好吧,我是一个大菜鸟,我不知道如何解决这个问题。谁能帮忙?
顺便说一句,如果有人感兴趣 - 我正在制作一个将二进制计数转换为十进制计数的程序,反之亦然。
最佳答案
只需像这样声明参数:
void zamianaNaDziesietny(int podstawa, int liczba, std::vector<int> reszta)
{
vector < int > cyfra;
cout <<"\n";
for(int a = reszta.size(); a > 0; a--)
{
cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
}
for(int a = 1; a < cyfra.size(); a++)
{
cyfra[0] += cyfra[a];
}
cout << cyfra[0];
}
或者更好的是,通过引用传递 vector 以避免它被复制:
void zamianaNaDziesietny(int podstawa, int liczba, std::vector<int>& reszta)
{
vector < int > cyfra;
cout <<"\n";
for(int a = reszta.size(); a > 0; a--)
{
cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
}
for(int a = 1; a < cyfra.size(); a++)
{
cyfra[0] += cyfra[a];
}
cout << cyfra[0];
}
您所做的是使用 int 数组 (int reszta[]
) 作为参数而不是 vector - 它们是不同的类型。
关于c++ - vector 作为函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719106/