C++11 Eclipse可以';我不懂boost和智能指针? 我们使用Eclipse CDT来进行C++ 11代码。我有一个类需要重构,以便可以对其进行测试。我们使用googletest/googlemock来编写单元测试。一个类包含一个Boost套接字,如下所示: class BoostUser { ... private: ... boost::asio::ip::udp::socket theSocket; .... }

C++11 Eclipse可以';我不懂boost和智能指针? 我们使用Eclipse CDT来进行C++ 11代码。我有一个类需要重构,以便可以对其进行测试。我们使用googletest/googlemock来编写单元测试。一个类包含一个Boost套接字,如下所示: class BoostUser { ... private: ... boost::asio::ip::udp::socket theSocket; .... },c++11,boost-asio,eclipse-cdt,C++11,Boost Asio,Eclipse Cdt,我们需要模拟从套接字返回的调用,因此我们决定将套接字更改为指针,并通过构造函数注入它。由于我们使用C++ 11,所以我使用了 UNQUIGYPTR 。因此,我们的成员改为: class BoostUser { ... private: ... std::unique_ptr<boost::asio::ip::udp::socket> theSocket = nullptr; .... } 为此: theSocket->open(listenEn

我们需要模拟从套接字返回的调用,因此我们决定将套接字更改为指针,并通过构造函数注入它。由于我们使用C++ 11,所以我使用了<代码> UNQUIGYPTR <代码>。因此,我们的成员改为:

class BoostUser {
    ...
private:
    ...
    std::unique_ptr<boost::asio::ip::udp::socket> theSocket = nullptr;
    ....
}
为此:

theSocket->open(listenEndpoint.protocol());
我编译了它,编译得很好,没有错误。我已经做了一些单元测试,它们仍然有效。我开始更改构造函数,所以它使用了另一个参数,依赖项注入的套接字。就在那时,我注意到了一个怪癖

我将点
更改为箭头
->
的所有实例都显示为错误。Eclipse错误报告“找不到方法“[function_name]”。它显示了我所做更改的每个实例,但是,记住,它编译时没有错误。如果这些是真正的错误,我会得到编译错误

作为一个实验,我将智能指针更改为一个原始指针,如下所示:

theSocket.open(listenEndpoint.protocol());
boost::asio::ip::udp::socket* theSocket = nullptr;
Eclipse对此非常满意。它仍然编译得很好,Eclipse没有显示任何错误。但是由于这是C++ 11,我们在整个地方使用了<代码> UNQuyGyPTR <代码>,Eclipse对它们非常满意。就在这个例子中,Eclipse对智能指针感到异常,我无法签入使用原始指针的代码


还有其他人遇到过Eclipse、智能指针和Boost类的问题吗?

这是IDE的常见情况,除非您有某种基于叮当声的完成引擎。您可能会遇到这样的问题。在Eclipse Oxygen.1或更早版本中使用GCC 7或更高版本时,它会影响
unique_ptr
。这个错误在Eclipse Oxygen.2及更高版本中已经修复。谢谢大家提供的信息。不幸的是,我们的应用程序与.2不配合,所以我想我们现在不得不忍受这个错误。就像我说的,它编译并运行;错误主要是表面的。也许.3将与我们的应用程序一起工作,我们可以跳过此错误。有没有方法抑制此错误?