我是Stack Overflow的新手,我正在自学C++,但我仍然是一个初学者.在完成了我正在使用的一本书(可能被认为过时和/或不是一本好书)之后,我决定通过自己尝试来重新强化一些概念,仅在需要时引用该书,但我似乎被卡住了.我试图解决的概念是继承,多态,抽象数据类型(ADT),并将我的类的代码分成头文件(.h)和C++文件(.cpp).对于文本墙提前抱歉,我只想清楚明确地说明我需要的地方.
所以,我的目标是创建简单的形状类,在适用的情况下相互继承.我有四个类:myPoly,myRectangle,myTriangle和mySquare.myPoly,如果我理解这个概念,应该是一个ADT,因为其中一个方法是一个纯虚函数(区域方法),因为创建一个myPoly对象不是我希望我的类的用户做的事情.myRectangle和myTriangle都派生自myPoly,而mySquare派生自myRectangle.我还包括了我计划测试课程的测试程序.我正在使用Code :: Blocks 10.05并在构建test.cpp程序时不断收到以下错误:
undefined reference to 'myPoly::myPoly()'
Run Code Online (Sandbox Code Playgroud)
我为myPoly类的方法得到了42个类似的错误.当我尝试为myRectangle和myTriangle构建.cpp文件时会发生这种情况.通过我试图对这个小项目遇到的问题进行的研究,我觉得我的包含警卫或我的#include语句出了问题,而且没有正确包含或者包含太多次.起初我将myPoly的.cpp文件提供给myRectangle和myTriangle,但是读取了几个地方,包括myPoly的.h文件更有效,还有一些如何自动包含它的.cpp.如果有人能提供一些有关的信息,我将不胜感激.我还记得一些关于如何在包含语句中使用引号与使用尖括号不同的内容.以下是我为我的小项目制作的所有九个文件.大多数评论都是对我的一些注释或提醒.
//Practice with inheritance, polymorphism, and Abstract Data Types
//header file for Polygon class
#ifndef MYPOLY_H
#define MYPOLY_H
class myPoly
{
public:
//constructor
//const reference pass because the values w and h don't change and reference avoid the time it takes to copy large
// objects by value (if there were any)
myPoly();
myPoly(const float & w, const float & h);
//destructor
virtual ~myPoly();
//accessors
float getWidth();
float getHeight(); …Run Code Online (Sandbox Code Playgroud)