Базовый класс C ++ не определен - PullRequest
0 голосов
/ 21 октября 2019

я сделал класс 'Object' и 'Vector', в каждом заголовочном файле. ('Object' является родительским классом для 'Vector') и созданный заголовочный файл 'Engine.h', который включает оба заголовочных файла класса.

сборка прошла успешно. но, если я создаю 'Object.cpp' файл, который пуст, получил ошибку. например, «Vector.h (7,2): ошибка C2504:« Объект »: базовый класс не определен»

Не могли бы вы сказать мне, почему в файле «Object.cpp» возникает эта ошибка?

//Engine.h
#pragma once
#include "Object.h"
#include "Vector.h"

namespace Engine
{

}

//Object.h
#pragma once
#include "Engine.h"

namespace Engine
{
    class Object
    {

    };
}

//Vector.h
#pragma once
#include "Engine.h"

namespace Engine
{
    class Vector : public Object
    {

    };
}
#include <iostream>
#include "Engine.h"

int main()
{
    return 0;
}

1 Ответ

2 голосов
/ 21 октября 2019

Вы забыли #include "Object.h" в своем файле Vector.h.

Похоже, что многие ваши классы полагаются друг на друга - это немного пахнет кодом, и это приводит к ошибкам компилятора, так как вы получили круглые include операторы. Если Engine включает Object и Object включает Engine, вы не можете скомпилировать - один из них всегда будет неопределенным.

...