我目前正在重构一些旧的代码,以满足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报告错误:
"Error: namespace "N::std" has no member unique_ptr"
在构造函数声明中。 (但不是m_blah
)的声明
....什么?为什么标准库命名空间被拉入N?!
版本信息:
答案 0 :(得分:0)
今天早上我启动了VS,这个问题自行消失了。
为了确保我可以隔离任何未来的问题,并且由于代码库很大,我回到原点,看看我是否可以防止错误:
到目前为止,非常好。