[英]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.