所以,我對某個東西有疑問。當試圖創建一個名爲currentCircle
的Circle對象,其參數爲string
和int
時,我遇到了一個錯誤,它告訴我它不能將變量currentCircle
聲明爲抽象類型。我認爲Shape是抽象類,是否有不同的方式來聲明Circle對象?所屬分類C++
#include "Shape.h"
#include "Circle.h"
#include "Rectangle.h"
#include "Triangle.h"
int main() {
// Shape circle1("blue");
Circle currentCircle("blue", 5);
cout << "Printing all shapes...\n";
currentCircle.print();
return 0;
}
Shape類(抽象基類)
class Shape {
public:
Shape() : color("") { }
Shape(const string& newColor) : color(newColor) { }
virtual ~Shape();
virtual void print() const { cout << color; }
virtual void print() = 0;
virtual double getArea() = 0;
private:
string color;
};
和圓類(派生類)
#include "Shape.h"
class Circle : public Shape {
public:
Circle(const string& newColor, int newRadius);
virtual ~Circle();
double getArea();
void print() const;
private:
int radius;
};
Circle::Circle(const string& newColor, int newRadius) {
radius = newRadius;
Shape(newColor);
}
double Circle::getArea() {
return (3.14*radius*radius);
}
void Circle::print() const{
print(Shape);
cout << "circle, radius " << radius;
}
您的代碼是完全有缺陷的。這將需要在這裏寫這本書,你需要拿起並閱讀基本知識來回答你的問題。這對於預期的堆棧溢出格式來說太廣泛了。 –
或者擺脫'虛擬無效print()= 0;''形狀'' – NathanOliver
那麼什麼樣的代碼是真實的?你知道的代碼或你開始使用的代碼? – NathanOliver