用VS2015实现A*算法的时候,遇到了一个小问题。
在使用STL中的set容器时,尝试向里面存放一个引用类型,代码如下:
1 |
set<MapUnit&> opendMapUnitList; |
结果遇到了如下很多不相关的错误报警:
之后改为存放指针:
1 |
set<MapUnit*> opendMapUnitList; |
就正常编译通过。
原因是,C++中的引用必须在声明的时候初始化,如果像这样没有初始化就放在vector中,自然是不行的。
另外,set是拷贝一份内容至容器中,而不是像C#和JAVA那样进行传引用。