これは私の基本クラスの Shape.h です
#ifndef Shape_H
#define Shape_H
#include <iostream>
using namespace std;
class Shape
{
protected:
string name;
bool containsObj;
public:
Shape();
Shape(string, bool);
string getName();
bool getContainsObj();
double computeArea();
};
#endif
シェイプ.cpp
#include "Shape.h"
Shape::Shape(string name, bool containsObj)
{
this -> name = name;
this -> containsObj = containsObj;
}
string Shape:: getName()
{
return name;
}
bool Shape::getContainsObj()
{
return containsObj;
}
これが私のサブクラスです。Cross.h
#ifndef Cross_H
#define Cross_H
#include <iostream>
#include "Shape.h"
using namespace std;
class Cross: public Shape
{
protected:
int x[12];
int y[12];
public:
Cross();
double computeArea();
};
#endif
Cross.cpp
#include "Cross.h"
Cross::Cross()
{
for (int i = 0; i < 12; i++)
{
this -> x[i] = 0;
this -> x[0] = 0;
}
}
Shape と Cross は別のファイルにありますが、同じフォルダー内にあります。奇妙なことに、これをコンパイルすると、「関数 'ZN5CrossC1Ev'、Shape::Shape() への未定義参照、'ZN5CrossC1Ev'、Shape::Shape() への未定義参照など、これまでに見たことのないエラーが発生しました。 、WinMain@16 への未定義の参照".
私は自分でデバッグを試みました。Cross コンストラクターを削除すると、正常に動作します。しかし、私は間違いなくそれが必要です。誰かが私にこれを説明できますか?