【发布时间】:2016-10-03 20:29:51
【问题描述】:
我在 A.h, A.cpp 和 B.h, B.cpp 中分别定义了两个类 A 和 B。 A类有一个我想在B类的函数中使用的结构。因为B类包含在A类中,所以我不能在B类中包含A类,因为它会导致循环依赖。所有文件的代码如下: 啊。
#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);
}
B.h
#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 与我的问题非常接近,但是,它们要么没有解释答案,要么我无法理解他们的解决方案。请帮我解决这个问题。
谢谢
更新 感谢 I-V 指出错误并为我提供解释。更新代码对我有用。感谢大家为我的 C/C++ 编码技能提供额外的知识。 :)
【问题讨论】:
-
您的
#include语法有问题。这些真的是你的源文件吗? -
这真的没那么难。使用包含保护,并包含您关心的类的头文件。
-
嘿马库斯,我已经为我的代码创建了一个类似的场景。 @JonathonReinhart:你能详细说明一下吗?
-
您没有提出真正的问题。你刚才说“会导致循环依赖”。您是否遇到任何编译时或运行时错误?如果是这样,请明确并询问这些问题。
-
@MilanJain 然后你需要重新设计你的代码。否则,接受我的指示,使用include guards,然后继续。
标签: c++ class struct arguments