Это мой базовый класс 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
Shape.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;
}
}
Форма и Крест находятся в разных файлах, но в той же папке. Странно, когда я компилирую это, ошибки, которые я никогда раньше не видел, такие как «В функции« ZN5CrossC1Ev », неопределенная ссылка на Shape :: Shape(),« ZN5CrossC1Ev », неопределенная ссылка на Shape :: Shape() , undefined ссылка на WinMain @ 16 ".
Я попытался выполнить некоторую отладку. Когда я удаляю конструктор Cross, он отлично работает. Но я определенно нуждаюсь в этом. Кто-нибудь может мне это объяснить?
Являются ли части, которые вы завернули в '# ifdef' в отдельных заголовочных файлах, а код находится в исходных файлах (.cpp)? Похоже, у вас возникают проблемы с компоновщиками, которые, вероятно, связаны с компиляцией заголовков в качестве источника. –
Несвязанный: Do * not * put 'using namespace std;' в файлах заголовков. Хотя это может показаться удобным, это будет один день, чтобы укусить вас. Полностью квалифицируйте стандартные объекты пространства имен библиотеки в заголовках (и везде, если это вообще возможно). – WhozCraig
Также не относится: ', хотя он может быть включен в' 'его лучшей идеей включить' 'тоже, если вы удалите' ', а затем забудьте указать другие зависимости (например, 'string'). –