【发布时间】:2021-08-10 09:14:13
【问题描述】:
这是我的文件的代码
#include <iostream>
#include <string>
#include <cstdio>
#include <fstream>
class Sphere{
private:
int x;
int y;
int r;
public:
Sphere();
void set_x(int first);
void set_y(int second);
void set_r(int radius);
int get_x();
int get_y();
int get_r();
};
class Array{
private:
Sphere** spheres;
int size;
int maxsize=101;
public:
Array();
~Array();
void addSphere(const Sphere& sphere);
Sphere& getSphere(int index)const;
int getQuant(int xp,int yp);
};
int main(){
Array spheres;
for(int i=0;i<101;i++){
spheres.addSphere(Sphere());
}
getQuant(15,30);
std::cout << "The programm made it to the end" << std::endl;
return 0;
}
Sphere::Sphere(){
x=rand()%100;
y=rand()%100;
r=rand()%50;
}
void Sphere::set_x(int first){
x=first;
}
void Sphere::set_y(int second){
y=second;
}
void Sphere::set_r(int radius){
r=radius;
}
int Sphere::get_x(){
return x;
}
int Sphere::get_y(){
return y;
}
int Sphere::get_r(){
return r;
}
Array::Array():size(0){
spheres=new Sphere*[maxsize];
}
Array::~Array(){
for(int i=0;i<maxsize;i++){
delete spheres[i];
}
delete[] spheres;
}
void Array::addSphere( const Sphere& sphere){
if(size<maxsize){
spheres[size]=new Sphere();
size++;
}else{
std::cout << "\nThe limit is exceeded at" << size << std::endl;
}
}
int Array::getQuant(int xp,int yp){
int quantity;
for(int i=0;i<101;i++){
getSphere(i);
if(this->x <= xp){
if(this->y <=yp){
quant++;
}
}
}
std:cout << "The quantity of spheres that has centers inside the stated area is:" << quantity;
}
Sphere& Array::getSphere(int index)const{
return *spheres[index];
}
好吧,这个程序应该以下列方式工作:生成一个 101 个球体(这不是球体,但没关系),中心坐标和半径是随机数。然后它应该找到在某个坐标区域中具有中心的球体的数量。但我有很多错误。这是他们的文字。
./src/main.cpp:42:3: error: use of undeclared identifier 'getQuant'
getQuant(15,30);
^
./src/main.cpp:97:14: error: no member named 'x' in 'Array'
if(this->x <= xp){
~~~~ ^
./src/main.cpp:98:16: error: no member named 'y' in 'Array'
if(this->y <=yp){
~~~~ ^
./src/main.cpp:99:9: error: use of undeclared identifier 'quant'
quant++;
^
./src/main.cpp:103:7: error: use of undeclared identifier 'cout'; did you mean 'std::cout'?
std:cout << "The quantity of spheres that has centers inside the stated area is:" << quantity;
^~~~
std::cout
你能帮我解决它们吗?
【问题讨论】:
-
您正在调用方法,但不在对象的上下文中,例如 getQuant() 而不是 spheres.getQuant();我也会用其他东西重命名 Array 以避免名称冲突
-
您的代码令人困惑。 1.
x在Sphere中是私有的,所以我推测您尝试使用sphere->get_x()