无法通过引用传递常量对象

Joh*_*han 1 c++ object pass-by-reference

我正在通过引用练习类声明/实现/传递对象.这是我的主类,头文件和其他类的代码:

//Header file (Circle2.h)
#ifndef CIRCLE_H
#define CIRCLE_H

class Circle{
    private:
        double radius;

    public:
        Circle();
        Circle(double newRadius);
        double getArea() const;
        double getRadius() const;
        void setRadius(double newRadius);
};
#endif

//Main class (PassObjectByReference.cpp)
#include <iostream>
#include "Circle2.h"
using namespace std;

void printCircle(const Circle &c){
    cout << "The area of the circle of " << c.getRadius() << " is " << c.getArea() << endl;
}

int main(){
    Circle myCircle(5.0);
    printCircle(&myCircle);

    return 0;
}

//Other class (Circle2.cpp)
#include "Circle2.h"

Circle::Circle(){
    radius = 1;
}

Circle::Circle(double newRadius){
    radius = (newRadius >= 0) ? newRadius : 0;
}

double Circle::getRadius() const{
    return radius;
}

double Circle::getArea() const{
    return radius * radius * 3.14159;
}

void Circle::setRadius(double newRadius){
    radius = (newRadius >= 0) ? newRadius : 0; 
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我得到以下两个错误:

PassObjectByReference.cpp:在函数'int main()'中:PassObjectByReference.cpp:11:错误:从'Circle*'类型的表达式'const Circle&'类型的引用无效初始化PassObjectByReference.cpp:5:错误:传递参数'void printCircle(const Circle&)'中的1个

我找不到错误.任何帮助将不胜感激.谢谢!

Gar*_*ree 8

int main(){
    Circle myCircle(5.0);
    printCircle(&myCircle); // You are passing a pointer.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

正确的说法是:

printCircle(myCircle);
Run Code Online (Sandbox Code Playgroud)