首页 > 解决方案 > collect2.exe: 错误: ld 返回 1 退出状态 \\ CPP & HPP 文件

问题描述

我正在为我的一个课程做一个项目,该项目需要我拥有多个 CPP 和 HPP 文件。我觉得我正确定义了所有类并正确设置了功能。在主文件中,我创建了一个函数来询问用户一些输入。然后我想将用户的输入设置为一个对象,以便以后可以操作它。但是,我似乎无法弄清楚为什么我不断收到以下错误。

这是我的代码:

头文件

#ifndef CIRCLE_HPP
#define CIRCLE_HPP
#include "Rectangle.hpp"

class Circle{
    private:
        double radius;
    public:
        Circle();
        Circle(double radius);
        double getRadius();
        void setRadius(double setRadius);
        double calArea();
        double calCircumference();
        double calDiameter();
        bool compareWithRec(Rectangle rec);
};
#endif

CPP 文件

#include "Circle.hpp"
#include "Rectangle.hpp"
using namespace std;

static const double PI = 3.141592;
double area;
//constructor with no parameters
Circle::Circle(){
    radius = 1.0;
}

//constuctor with double parameter
Circle::Circle(double radius){
    this->radius = radius;
}

//accessor function
double Circle::getRadius(){
    return radius;
}

//mutator function 
void Circle::setRadius(double setRadius){
    radius = setRadius;
}

//member function for area
double Circle::calArea(){
    
    area = radius*radius*PI;
    return area;
}

//member function for circumference
double Circle::calCircumference(){
    double
    circumferance = 2*PI*radius;
    return circumferance; 
}

//member function for diameter
double Circle::calDiameter(){
    double
    diameter = 2*radius;
    return diameter; 
}

//member function to determine if recArea = calArea
bool Circle::compareWithRec(Rectangle rec){
    if(area == rec.calArea())
        return true;
    else   
        return false;
}

主要的


#include <iostream>
using namespace std;

#include "Circle.hpp"
#include "Triangle.hpp"
#include "Rectangle.hpp"

void getAnswerRadius();




int main(){
    Circle obj;
    int userChoice;
    cout << endl;
    cout << endl;
    cout << "-= Main Menu: Choose a shape or exit =-" << endl;
    cout << "1. Circle" << endl;
    cout << "2. Triangle" << endl;
    cout << "3. Rectangle" << endl;
    cout << "0. Exit" << endl;
    cout << endl;
    cout << endl;
    cout << "Enter an action: ";


    //loop to make user select options 1, 2, 3, or 0.
    do{
        cin >> userChoice;
        if(userChoice == 1){
            getAnswerRadius();
        }else if(userChoice == 2){
            cout << "two" << endl;
        }else if(userChoice == 3){
            cout << "three" << endl;
        }else if(userChoice == 0){
            cout << "Exit" << endl;
        }else{
            cout << "Hey! That doesnt look correct, please enter 1, 2, 3, or 0: ";
        }
    }while(userChoice != 1 && userChoice !=2 && userChoice != 3 && userChoice !=0);

    
    return 0;
}



//function ask for user input as well as collects user's input 
//function is responsible for setting radius (default is 1.0)
void getAnswerRadius(){
    char answer;
    double radiusCircle;
    Circle obj;
    cout << "Do you wish to enter the radius of the circle (Y/N): ";
    cin >> answer;
    if(answer == 'y' || answer == 'Y'){
        cout << "Please enter the value of radius of the circle: ";
        cin >> radiusCircle;
        Circle obj(radiusCircle);
    }else{
        cout << "error";
    }
}

标签: c++

解决方案


推荐阅读