我已经创建了一个名为Box
的类,它几乎就像听起来一样。我想对这些盒子对象进行排序,并且我已经创建了一个这样做的函数。
void boxSort(Box array[], int size) {
Box temp;
bool swap;
do {
swap = false;
for(int count=0; count<(size-1); count++) {
int volume1 = array[count].getVolume(array[count].height, array[count].width, array[count].length);
int volume2 = array[count+1].getVolume(array[count+1].height, array[count+1].width, array[count+1].length);
if(volume1 > volume2) {
temp = array[count];
array[count] = array[count+1];
array[count+1] = temp;
swap = true;
}
}
}
while(swap);
}
此函数对类Box
的对象数组进行排序。
Box
上课:
class Box {
public:
double height, width, length;
double getVolume(double, double, double);
double getSurfaceArea(double, double, double);
void setHeight(double);
void setWidth(double);
void setLength(double);
Box() {
height = width = length = 1;
}
Box(double h, double w, double l) {
setHeight(h);
setWidth(w);
setLength(l);
}
};
#endif
void Box::setHeight(double h) {
height = h;
}
void Box::setWidth(double w) {
width = w;
}
void Box::setLength(double l) {
length = l;
}
double Box::getVolume(double h, double w, double l) {
double volume = h*w*l;
return volume;
}
double Box::getSurfaceArea(double h, double w, double l) {
double surfaceArea = (h*w)*2 + (h*l)*2 + (l*w)*2;
return surfaceArea;
}
当我运行此程序时,我收到错误:
链接器命令失败,退出代码为1
这并没有显示在任何特定的行上,我不知道它意味着什么,所以我对如何调试它有点迷失。
答案 0 :(得分:0)
如果链接的库或目标文件有任何问题,则会报告链接器错误。您是否能够成功构建可执行文件?
答案 1 :(得分:0)
我认为由于代码中有多个main()函数而发生此错误。您只能有一个main()函数。
答案 2 :(得分:0)
不确定错误。但我建议将boxSort
函数更改为类似的内容。
将getVolume
更改为此
double Box::getVolume() {
return height*width*length;
}
和boxSort到此
void boxSort(std::array<Box, 3> boxes)
{
struct
{
bool operator()(Box x, Box y)
{
return x.getVolume() < y.getVolume();
}
}compFunc;
std::sort(boxes.begin(), boxes.end(), compFunc);
for(Box a: boxes)
{
std::cout<<a.getVolume()<<" ";
}
}
函数调用:
std::array<Box,3> boxes = {box1, box2, box3};
boxSort(boxes);