【发布时间】:2025-12-03 02:30:01
【问题描述】:
问了类似的问题,但他们没有回答我的问题。我正在尝试创建抽象类(具有一个纯虚函数)。但是编译器给出了这个错误:
src/library.cpp:11:24: 错误:无效转换为抽象类类型 ‘mgc::形状’ 形状(长度、名称);
我有抽象类的构造函数,因为它有成员变量和成员函数。我不知道为什么会出现这个错误..
这是我的头文件librar.h
class Shapes
{
public:
Shapes(double len = 0.0, std::string name = "");
virtual void printClass();
virtual double area() = 0;
protected:
double len_, width_;
std::string name_;
};
class Triangle : public Shapes
{
public:
Triangle(double lene =0, std::string namee= "" );
void printClass();
double area();
};
这是我的实现文件 library.cpp
mgc::Shapes::Shapes(double length, std::string name)
: len_(length),
width_(length),
name_(name)
{}
mgc::Triangle::Triangle(double length, std::string name)
{
Shapes(length, name);
}
void mgc::Shapes::printClass()
{
std::cout<<"Base class is called"<<std::endl;
}
void mgc::Triangle::printClass()
{
std::cout<<"Triangle class is called"<<std::endl;
}
double mgc::Triangle::area()
{
return(width_*len_);
}
【问题讨论】:
-
请制作一个minimal reproducible example,就像this一样,但要更短,抽象出不必要的杂物。这不是可选的。
标签: c++ c++11 abstract-class pure-virtual