C++ Intellisense无法在Visual Studio 2008中使用boost 1.40.0实现boost::shared_ptr
我无法让intellisense自动完成boost 1.40.0的共享指针。它在Boost 1.33.1中运行良好。下面是一个简单的示例项目文件,其中“自动完成”不起作用:C++ Intellisense无法在Visual Studio 2008中使用boost 1.40.0实现boost::shared_ptr,c++,visual-studio-2008,boost,intellisense,shared-ptr,C++,Visual Studio 2008,Boost,Intellisense,Shared Ptr,我无法让intellisense自动完成boost 1.40.0的共享指针。它在Boost 1.33.1中运行良好。下面是一个简单的示例项目文件,其中“自动完成”不起作用: #include <boost/shared_ptr.hpp> struct foo { bool func() { return true; }; }; void bar() { boost::shared_ptr<foo> pfoo; pfoo.get(); // &
#include <boost/shared_ptr.hpp>
struct foo
{ bool func() { return true; }; };
void bar() {
boost::shared_ptr<foo> pfoo;
pfoo.get(); // <-- intellisense does not autocomplete after "pfoo."
pfoo->func(); // <-- intellisense does not autocomplete after "pfoo->"
}
当我右键单击shared_ptr并转到Definition时,它会将我带到中的shared_ptr类的前向声明。它并没有把我带到实际的定义,这是在。但是,它编译得很好,boost的自动完成功能也很好。此外,对于boost::scoped_ptr和boost::shared_阵列,自动完成也可以很好地工作
有什么想法吗?Intellisense有自己的编译器,它可以原谅代码错误。它必须能够理解不完整的代码,但有时无法正确解析正确的代码。后者尤其适用于要求苛刻的模板代码,而boost的这一点臭名昭著
要么继续使用它,要么等到Intellisense为VC10或之后的版本使用了宣布的普通编译器,或者尝试一下它的最新版本是否更好 Intellisense有自己的编译器,它可以原谅代码错误。它必须能够理解不完整的代码,但有时无法正确解析正确的代码。后者尤其适用于要求苛刻的模板代码,而boost的这一点臭名昭著
要么继续使用它,要么等到Intellisense为VC10或之后的版本使用了宣布的普通编译器,或者尝试一下它的最新版本是否更好 不管它值多少钱,VC++2010都附带了。你用VS2010试过Boost 1.40吗?为了它的价值,VC++2010附带了它。你用VS2010试过Boost 1.40吗?我最近也遇到了这个问题,并开始寻找答案。我所发现的只是人们说Intellisense将在VC10中得到改进,或者我现在应该使用视觉辅助来改进它。我不喜欢这些答案,所以我做了一些实验。以下是修复大多数问题的解决方案,至少它修复了共享\u ptr的问题,而范围\u ptr没有 解决方案: 更改Intellisense在exception.hpp中跳转到的转发声明,以包含模板参数名T 改变
template <class>
class shared_ptr;
到
Intellisense似乎认为没有模板参数名称的定义是一个单独的类,这是shared_ptr和scoped_ptr之间差异的根源
现在,我提到这并没有解决我所有的问题。有时,头文件中声明的模板化对象在cpp文件中不保留模板类型
前
然后在cpp文件中
// file.cpp
#include "file.h"
void bar::funcB()
{
pfoo.get(); // <-- intellisense does autocomplete after "pfoo."
pfoo->func(); // <-- intellisense does not autocomplete after "pfoo->"
}
不管怎么说,这是一个未经测试的问题,我们仍然有,但这是一个不太常见的例子,所以我们可以生活在它,直到智能感知改善。我最近也遇到了这个问题,并去寻找答案。我所发现的只是人们说Intellisense将在VC10中得到改进,或者我现在应该使用视觉辅助来改进它。我不喜欢这些答案,所以我做了一些实验。以下是修复大多数问题的解决方案,至少它修复了共享\u ptr的问题,而范围\u ptr没有 解决方案: 更改Intellisense在exception.hpp中跳转到的转发声明,以包含模板参数名T 改变
template <class>
class shared_ptr;
到
Intellisense似乎认为没有模板参数名称的定义是一个单独的类,这是shared_ptr和scoped_ptr之间差异的根源
现在,我提到这并没有解决我所有的问题。有时,头文件中声明的模板化对象在cpp文件中不保留模板类型
前
然后在cpp文件中
// file.cpp
#include "file.h"
void bar::funcB()
{
pfoo.get(); // <-- intellisense does autocomplete after "pfoo."
pfoo->func(); // <-- intellisense does not autocomplete after "pfoo->"
}
无论如何,这是一个未经测试的问题,我们仍然存在,但这是一个不太常见的例子,所以我们可以接受它,直到智能感知改善