我目前正在重构一些旧代码,以符合C++14的正确性标准,但出现了一些奇怪的问题。
这个错误是独特的,而且在其余的代码中并未出现。我已经将实际类型模糊化,因为它们并不重要。
在重构之前,以下代码运行得很好:
这个错误是独特的,而且在其余的代码中并未出现。我已经将实际类型模糊化,因为它们并不重要。
在重构之前,以下代码运行得很好:
namespace N {
class A {
public:
A(B* blah) : _blah(blah); //class A owns the instance of class B.
~A() { delete m_blah; m_blah = nullptr; }
//...Lots more code.
private:
B* m_blah;
};
}
我将所有必要的基于所有权的指针更改为它们各自的智能指针:
#include <memory>
namespace N {
class A {
public:
A(std::unique_ptr<B> blah);
~A() { /* DO NOTHING */ }
private:
std::unique_ptr<B> m_blah;
};
}
这个不再起作用。Intellisense 报告一个错误:
"错误:命名空间“N::std”中没有成员unique_ptr"
在构造函数声明中。(但是m_blah
的声明没有出现这个错误)
....什么?为什么标准库命名空间被引入到 N 中?!
版本信息:
- VS2015社区版(RTM)版本14.0.23107.0 D14REL
- 开发人员命令提示符报告的cl版本:编译器版本19.00.23026
#include <memory>
? - R Sahunamespace N
块内是否包含了头文件? - T.C.