簡體   English   中英

無法通過引用傳遞常量對象

[英]Can't pass a constant object 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; 
}

當我嘗試編譯時,出現以下兩個錯誤:

PassObjectByReference.cpp:在函數'int main()'中:PassObjectByReference.cpp:11:錯誤:從類型'Circle *'的表達式中對類型'const Circle&'的引用的初始化無效PassObjectByReference.cpp:5:錯誤:正在傳遞參數1的'void printCircle(const Circle&)'

我找不到錯誤。 任何幫助將不勝感激。 謝謝!

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

正確的聲明是:

printCircle(myCircle);

拖放& -將其變成指針,這不是您想要的。 您應該只寫:

printCircle( myCircle );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM