Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Intellisense无法在Visual Studio 2008中使用boost 1.40.0实现boost::shared_ptr_C++_Visual Studio 2008_Boost_Intellisense_Shared Ptr - Fatal编程技术网

C++ Intellisense无法在Visual Studio 2008中使用boost 1.40.0实现boost::shared_ptr

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(); // &

我无法让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();      // <-- 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->"
}
无论如何,这是一个未经测试的问题,我们仍然存在,但这是一个不太常见的例子,所以我们可以接受它,直到智能感知改善