错误:在'long'之前预期的primary-expression和无效的转换

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)

Mys*_*ial 5

错误在这里:

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.