entity @ 2024-11-29 18:39:03
学校里出了一道题,我写出了这样的代码
#include<iostream>
using namespace std;
class SPrime{
private:
int a[1001];
int n;
public:
SPrime(){
n=0;
}
bool prime(int x){
for(int i=2;i*i<=x;i++)
if(x%i==0) return false;
return true;
}
void isSPrime(){
for(int i=1000;i<=9999;i++){
int t=i;
bool isit=true;
while(t){
if(!prime(t)){
isit=false;
break;
}
t/=10;
}
if(isit) a[++n]=i;
isit=true;
}
return ;
}
void show(){
for(int i=1;i<=n;i++){
cout<<a[i]<<' ';
if(i%6==0) cout<<endl;
}
return ;
}
};
int main(){
SPrime e;
e.isSPrime();
e.show();
return 0;
}
这份代码不会报错且可以通过,但是如果要是使用了构造函数,也就是这样
int main(){
SPrime e();
e.isSPrime();
e.show();
return 0;
}
就会报错,报错信息为 [Error] request for member 'isSPrime' in 'e', which is of non-class type 'SPrime()'
想问问洛咕大佬们这是什么情况
by entity @ 2024-11-29 18:41:16
补:改成
SPrime e=new SPrime();
后,报错信息为[Error] conversion from 'SPrime*' to non-scalar type 'SPrime' requested
by yukimianyan @ 2024-11-29 18:45:45
SPrime e(); 圆括号改为花括号@entity
by yukimianyan @ 2024-11-29 18:47:33
c++ 版本不够的话,要不写 SPrime e = Sprime(); 算了
by entity @ 2024-11-29 18:47:41
@yukimianyan 改为花括号后,报错信息为
[Error] in C++98 'e' must be initialized by constructor, not by '{...}'
by entity @ 2024-11-29 18:49:10
@yukimianyan
ok行了,谢谢佬