Я прочитал множество тем по этому вопросу и следовал инструкциям на http://www.eventhelix.com/RealtimeMantra/HeaderFileIncludePatterns.htm,, но у меня все еще возникают проблемы с включениями.
Чтобы убедиться, что у меня нет другихОшибка в моем реальном коде, я написал и попытался точно скомпилировать следующий код.
Ач:
#ifndef A_H
#define A_H
class A
{
public:
A(){};
void myMethod() const;
};
#endif
A.cpp:
#include "A.h"
#include <iostream>
void A::myMethod() const
{
std::cout << "Hooray!" << std::endl;
}
Bh:
class A;
#ifndef B_H
#define B_H
class B
{
const A* aInstance;
public:
B(){};
void useA() const;
};
#endif
B.cpp:
#include "B.h"
void B::useA() const
{
aInstance.myMethod();
}
main.cpp:
#include "A.h"
#include "B.h"
int main()
{
B bInstance;
bInstance.useA();
return 0;
}
Команда компиляции:g++ main.cpp A.cpp B.cpp
Ошибка:
B.cpp: In member function ‘void B::useA() const’:
B.cpp:5:15: error: request for member ‘myMethod’ in ‘((const B*)this)->B::aInstance’, which is of non-class type ‘const A* const’
Я действительно начинаю расстраиваться.Как заставить класс B использовать класс A?Мы не добрались до указателей и более крупных проектов в классе C ++, который я взял, и из того, что я прочитал, я действительно чувствую, что понимаю, что здесь происходит, но я не знаю, почему это не работает,
Спасибо за любую помощь.Вы будете делать все мои выходные.