Yan*_*key 1 c++ oop algorithm compiler-errors
我知道很多人都遇到这个错误.我确实做了搜索工作,但似乎这个错误消息出现在所有不同的情况下.你能告诉我什么是错的吗?基本上这个类存储一个长输入的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);
}
Run Code Online (Sandbox Code Playgroud)
错误在这里:
num(long in) // constructor
{
breakDown(long in);
}
Run Code Online (Sandbox Code Playgroud)
把它改成这个:
num(long in) // constructor
{
breakDown(in);
}
Run Code Online (Sandbox Code Playgroud)
调用函数时不指定类型.
另一个错误在这里:
num num1=new num((long)81236);
Run Code Online (Sandbox Code Playgroud)
new num返回一个指针.但是你将它分配给一个num对象 - 这是不兼容的.
你有两个选择:
num num1((long)81236);
Run Code Online (Sandbox Code Playgroud)
这将在堆栈上本地创建一个num对象.
另一种选择是:
num *num1 = new num((long)81236);
Run Code Online (Sandbox Code Playgroud)
这将在堆上分配num对象.但你需要稍后释放它delete.