【发布时间】:2015-09-01 14:35:19
【问题描述】:
好的,所以我正在尝试通过此转换函数将整数转换为二进制,但我在其中使用数组/向量时遇到了一些问题。我以前使用数组进行过这项工作,但我开始收到错误。我将最初使用的数组(已注释掉)放在我现在使用的向量下方。我改用矢量是因为从我所做的研究来看,它似乎会更好。
我在 for 循环中遇到 tempArray[i] = remainder; 错误。
错误提示:
错误 2 错误 C2679:二进制“=”:未找到采用“int”类型右侧操作数的运算符(或没有可接受的转换)`
我读过一些关于重载的文章,但不知道那是什么。
当我做一个数组时,我在数字int tempArray[digits]; 上得到了这三个错误,我把它作为索引(对于数组,只需注释掉向量并使用已经注释掉的数组):
错误 1 错误 C2057:预期的常量表达式
错误 2 错误 C2466:无法分配常量大小为 0 的数组
错误 3 错误 C2133:“tempArray”:未知大小
最后,我刚刚从使用 Sublime Text 3 和 Cygwin 作为我的编译器切换到使用 Visual Studios,所以我不知道这是否与它有关。
char* convert(int palindrome)
{
int remainder, digits = 0, dividend = palindrome;
while (dividend != 0)
{
dividend = dividend / 2;
digits++; //5 digits, Johns Computer
}
std::cout << "Digits: " << digits;
std::vector<int>* tempArray = new std::vector<int>[digits]; // vector
//int tempArray[digits]; using an array
dividend = palindrome;
for (int i = digits - 1; i >= 0; i--)
{
remainder = dividend % 2;
tempArray[i] = remainder;
dividend = dividend / 2;
// cout << array[i];
}
// cout << setw(3) << palindrome << " in binary is" << setw(3);
for (int j = 0; j < digits; j++)
{
// cout << array[j];
}
if (palindrome == 0)
cout << 0;
cout << endl;
//int *pDriveArray = array[digits];
//return readDrives(array, digits);
return 0;
}
int main() {
char *currDrives = convert(GetLogicalDrives());
cin.get();
return 0;
}
编辑:在下面的帮助下修复了该问题。在转换函数结束时,我有return readDrives(tempArray, digits);,并且我在 tempArray 上遇到错误。返回向量的正确方法是什么?
【问题讨论】:
-
tempArray是(没有明显原因)指向向量的指针。tempArray[n]是一个向量。您不能为其分配 int 。除非确实需要,否则不要使用指针。 -
你的转换函数中“回文”这个词是做什么的?你是随机取名字还是真的只打算接受回文数字?