我知道有很多人遇到这个错误。我确实做了搜索工作,但似乎这个错误消息出现在所有不同的情况下。你能告诉我什么是错的吗?基本上这个类存储一个长输入的int数组。这个错误发生在函数num()
中和另一个错误:
main.cpp:43: error: invalid conversion from ‘num*’ to ‘long int’
main.cpp:43: error: initializing argument 1 of ‘num::num(long int)’
#include <iostream>
#include <fstream>
using namespace std;
//ifstream fin;
//ofstream fout;
class num
{
public:
int dig[9];
void breakDown(long input)
{
for(int digPos=0;input>0;digPos++)
{
dig[digPos]=input-((int)input/10)*10;
input=(int)input/10;
}
}
num(long in) // constructor
{
breakDown(long in);
}
int outPut()
{
for(int digPos=0;digPos<9;digPos++)
{
cout << dig[digPos];
}
return 0;
}
};
//int init()
//{
// fin.open("runround.in",ifstream::in);
// fout.open("runround.out");
//}
int main()
{
// init();
num num1=new num((long)81236);
}
答案 0 :(得分:5)
错误在于:
num(long in) // constructor
{
breakDown(long in);
}
将其更改为:
num(long in) // constructor
{
breakDown(in);
}
调用函数时,不要指定类型。
另一个错误在这里:
num num1=new num((long)81236);
new num
返回一个指针。但是您将它分配给num
对象 - 这是不兼容的。
这里有两个选项:
num num1((long)81236);
这将在堆栈本地创建一个num对象。
另一个选项是:
num *num1 = new num((long)81236);
这将在堆上分配num对象。但是您需要稍后使用delete
释放它。