美好的一天。因此,对于作业,我的任务是创建6类不同的函数。但是,我特别遇到1问题,这要求我创建一个带二进制数并将其转换为小数的类。以下是我从分配提供的驱动程序文件中获得的内容:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "binaryconversion.h"
int main()
{
///*********************************Testing BinaryConversion Class************************************************/
cout<<"Creating BinaryConversion object\n\n\n";
BinaryConversion binary;
cout<<"Binary value 111 to decimal = 3\n";//7
cout<<"Actual function result: " << binary.binaryToDecimal(111);
cout<<"Binary value 101001 to decimal = 41\n";
cout<<"Actual function result: " << binary.binaryToDecimal(101001);
cout<<"Binary value 11100 to decimal = 28\n";
cout<<"Actual function result: " << binary.binaryToDecimal(11100);
return 0;
}
对于.h文件我有:
#ifndef BINARYCONVERSION_H
#define BINARYCONVERSION_H
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class BinaryConversion
{
public:
BinaryConversion();
void binaryToDecimal(int);
};
#endif // BINARYCONVERSION_H
最后,对于.cpp,我有这个:
#include "binaryconversion.h"
BinaryConversion::BinaryConversion()
{
}
void BinaryConversion::binaryToDecimal(int){
int decimalNumber = 0, y = 0, remainder;
while (x!=0)
{
remainder = n%10;
n /= 10;
decimalNumber += remainder*pow(2,y);
++y
}
return decimalNumber;
}
现在我的问题是,当我构建文件时,我在驱动程序文件中的以下行中出现错误:
cout<<"Actual function result: " << binary.binaryToDecimal(111);
cout<<"Actual function result: " << binary.binaryToDecimal(101001);
cout<<"Actual function result: " << binary.binaryToDecimal(11100);
我可能做错了什么?
编辑:在完成所有修正建议后,当前代码如下:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class BinaryConversion
{
public:
BinaryConversion();
int binaryToDecimal(int x);
private:
int x;
int n;
};
#endif // BINARYCONVERSION_H
的.cpp:
int BinaryConversion::binaryToDecimal(int x){
int decimalNumber = 0, y = 0, remainder;
while (x!=0)
{
remainder = x%10;
x /= 10;
decimalNumber += remainder* 1 >> y;
++y;
}
return decimalNumber;
}
答案 0 :(得分:0)
您的 void BinaryConversion::binaryToDecimal(int)
功能未正确实现。首先,您将值传递给函数,但未正确写入参数名称。它应该是binaryToDecimal(int x)
。因此您会收到此错误。
其次,返回类型不应该为void,因为它返回一个整数值给调用函数。因此,返回类型应为int
。
功能应如下所示:
void BinaryConversion::binaryToDecimal(int x){
int decimalNumber = 0, y = 0, remainder;
while (x!=0){
remainder = x%10;
x /= 10;
decimalNumber += remainder*pow(2,y);
++y;
}
return decimalNumber;
}