У меня есть два класса A и B, определенные в A.h, A.cpp и B.h, B.cpp соответственно. Класс A имеет структуру, которую я хочу использовать в функции класса B. Поскольку класс B включен в класс A, я не могу включить класс A в класс B, поскольку это приведет к циклической зависимости. Код для всех файлов приведены ниже: АчC++ pass struct из одного класса в другой класс
#ifndef _A_H
#define _A_H
#include B.h
namespace common {
class A {
public:
static struct strctOfA {
float p1 = 2;
} structA;
void functionOfA();
};
}
#endif // !_A_H
a.cpp
#include A.h
using namespace common;
A::functionOfA() {
B b;
b.functionOfB(structA);
}
Bh
#ifndef _B_H
#define _B_H
namespace common {
class B {
public:
functionOfB(??);
};
}
#endif // !_B_H
B.cpp
#include B.h
using namespace common;
B::functionOfB(??) {
// Want to use structA here;
}
Я посмотрел в StackOverflow и нашел thread довольно близко к моей проблеме, однако, они либо не объясняют ответ, либо я не могу понять их решение. Пожалуйста, помогите мне с этим.
Благодаря
Update Благодаря I-V за указание на ошибку и предоставили мне объяснение. Обновление кода сработало для меня. Спасибо всем за предоставление дополнительных знаний моим навыкам кодирования на C/C++. :)
Ваш синтаксис '# include' является сомнительным. Это действительно ваши исходные файлы? –
Это действительно не так сложно. Используйте include guard и включите файлы заголовков для интересующих вас классов. –
Эй, Маркус, я создал похожий сценарий моего кода. @ JonathonReinhart: можете ли вы, пожалуйста, немного разобраться? –