我有这样的代码: 请原谅我的波兰名字,我希望这不是问题。如果你想,我可以改变它们。
#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;
}
我不知道如何在函数“zamiananaDziesietny”中使用vector'reszta'作为参数。 我应该输入什么才能让这个程序编译?
我收到2个错误: 其中之一是: 'reszta'未在此范围内声明
这是一个数组......好吧,矢量是一种数组......我想......我是菜鸟,所以我总是错的。
我可以在main中处理这个向量,添加“cout&lt;&lt; reszta [0];” (只是在屏幕上写一个这个向量的元素)在main中,只是在这两个函数的导入之间运行良好。但我认为这个问题可以通过在main中设置这个向量来解决,然后它也将作为zamianaZDziesietnego()函数中的参数,但是......
我不知道如何在函数中使用向量作为参数。
我得到的第二个错误是: 请求'reszta'中的成员'size',这是非类型'int *' 它在第32行。
所以这是我的问题。 我试过用几种不同的方式输入这个参数。
当我尝试时: void zamianaNaDziesietny(int podstawa,int liczba,vector reszta [])
第二个错误更改为: 请求'reszta'中的成员'size',它是指针类型'std :: vector *'(也许你打算使用' - &gt;'?)|
并且还在下面几行出现了一个新错误:
'*中没有匹配'operator *'(reszta +((((sizetype)a)+ -1u)* 12u))* pow((double)podstawa,(double)(a + -1)) “|
嗯,我是一个非常大的菜鸟,我不知道如何解决这个问题。有人可以帮忙吗?
顺便说一句,如果有人有兴趣 - 我正在制作一个程序,将线性计数转换为十进制,反之亦然。
答案 0 :(得分:3)
只需声明这样的论点:
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];
}
或者更好的是,通过引用传递向量以避免被复制:
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[]
)作为参数而不是一个向量 - 它们是不同的类型。
答案 1 :(得分:1)
向量与数组不同,因为向量是类,并且可以有调用它们的方法(例如.size()
。数组来自c,它们实际上只是内存中的指针。如上所述传入引用将是传递向量的最佳方法,但请务必小心修改。