循环依赖c意外错误或只是一个糟糕的设计
Circular Dependency c unexpected errors or just a bad design
我想做的是当一个对象进入一个新的类K时,它必须退出(从列表中删除)所有的K(子B和D),但我得到这个错误只是不能弄清楚。实际上有一个更大的列表,列出类K s,但我不能通过引用达到它(好吧,我可以,但很多工作不是点)和项目必须循环依赖
//class A.h
#include some_other_header_circularly_dependent_on_class_B
class B
class A{
public:
string getname(){return name;};
void setWhere(K *a){whereami=a;};
void exit(){
if(whereami!=NULL)
(whereami)->exit(name);//error C2227: left of '->exit' must point to class/struct/union/generic type
};
private:
K* whereami;
string name;
};
//class B.h
#include "A.h"
class K{
//abstract functions
}
class B:public class K{
public:
void enter(A* a){
a->exit();
alist.push_front(a);
a->setWhere(this);
};
void exit(string a){
for(auto it=alist.begin();it!=alist.end();)
if ((*it)->getname()==a)
alist.erase(it);
else it++;
};
private:
list<A*> alist;
};
请随时提出解决方案或新的设计,谢谢。
为什么不把所有的方法实现移动到单独的。cpp文件中,只保留头文件中的声明呢?那么B.h和A.h都可以包含在a.p p和b.p p
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 声明双重给它一个值0,但打印结果意外变化
- CMake 意外地将最后一个文件名预置到可执行文件中
- 如果在循环中给cin一个意外的输入,则会自动输入C++换行符作为输入
- 打印函数会返回一个意外值,原因是什么
- 依赖于参数的查找在来自另一个命名空间的别名类型上意外行为
- 在QIODevice::Append模式下打开的QFile意外工作.这是一个Qt错误吗
- 在C++中,当继承一个类并重写一个函数时.从数组中调用那个被重写的函数时,我得到了一个意外的结果
- 在调用malloc之后,我得到了一个意外的大小
- 将一个char指针赋值给另一个(不同的地址)的意外结果
- 初始化数组工作得很好,但是当试图将其打印出来时,它会打印出一个额外的列和一个意外字符
- 如果其中一个进程意外死亡,进程间内存会发生什么情况
- 循环依赖c意外错误或只是一个糟糕的设计