- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 Windows 7 笔记本电脑上轻松开发一个 websocket++ 服务器(vi
还不太好,不想经常使用 ftp)。我将在最后迁移到 Ubuntu 12.10。
我正在使用 Visual C++ Win32 控制台应用程序项目。
我include
websocketpp
目录,安装boost 1.53.0 How do you install Boost.Build on Windows? , 和 include
d & link
ed boost Boost linking, Visual Studio & version control .
我正在尝试构建
print_server.cpp
http://www.zaphoyd.com/websocketpp/manual/building-program-websocket
当我这样做时,我得到 Error 1 error C2182: '*' : illegal use of type 'void' c:\boost_1_53_0\boost\smart_ptr\intrusive_ptr.hpp Line:155 Column:1
boost 代码是(第二行是155):
T & operator*() const
{
BOOST_ASSERT( px != 0 );
return *px;
}
为什么会出现此错误?我该如何解决?
最佳答案
这是在 VCPP 上使用 boost 进行编译时的一个已知问题。 WebSocket++ 0.3 不使用 intrusive_ptr,但它确实使用 static_pointer_cast。每个 boost 智能指针都实现了它们自己的 boost::static_pointer_cast 重载。 VCPP 在静态转换 shared_ptr<void>
时似乎无法选择正确的重载到 shared_ptr<connection_ptr>
. Clang 和 GCC 都使用了正确的重载,而 VCPP 没有。我有一个演示这个问题的小演示程序,我一直想清理这个问题并询问 Stack Overflow 关于...
与此同时,一个简单的解决方法是告诉 WebSocket++ 使用 C++11 而不是 boost 智能指针。 VCPP 与 std::static_pointer_cast/std::shared_ptr 一起正常工作。每http://www.zaphoyd.com/websocketpp/manual/reference/cpp11-support定义 _WEBSOCKETPP_CPP11_MEMORY_
在包含 WebSocket++ header 之前将完成此操作。我已经测试了 VCPP2010 的 C++11 实现 <memory>
它实现了 WebSocket++ 所需的一切。
关于c++ - 错误 C2182 : '*' : illegal use of type 'void' c:\boost_1_53_0\boost\smart_ptr\intrusive_ptr. hpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15695972/
提升智能指针can be used with polymorphism,但是如何将子类转换回指针? using namespace boost; // ... shared_ptr a_ptr(new
有什么方法可以从函数中销毁 std::shared_ptr 吗?在下面的示例中,如果我在 main() 中将 sptr 设置为 nullptr,它会“破坏”对象,因此调用它是 Print( ) 失败。
我想知道这个例子是否会导致段错误,因为对象的 dtor 被调用了,我仍然持有指向对象属性的 shared_ptr。 struct foo{ std::shared_ptr const bar
我是一名学习 C++ 的 SWE,并使用 std::unique_ptr 作为对 head 和 next 的引用构建了一个简单的 LinkedList 类。这是基本结构: template stru
可以boost::smart_ptr比如scoped_ptr和shared_ptr可以用在多态中吗? class SomeClass { public: SomeClass() {
我正在尝试建立哪些数据成员基元/对象(超出 T* 指针)boost(或 std,如果它更容易的话) shared_ptr 有,当 shared_ptr 用于访问底层堆时,它将与 T* 指针位于同一 L
作为一个试图理解智能指针的 C++ 新手。我写了下面的代码来检查。 它确实编译并运行了,但我期望我的类的析构函数被调用并从析构函数打印 cout,但它没有。 我们是否需要重载用户定义类中的任何函数,以
鉴于以下情况: class Curve { public: typedef boost::shared_ptr Pointer; // ... private: // ... }; cla
我目前正在做很多关于异常安全的事情。 (Herb Sutter 的 Exceptional C++、C++ FAQ Lite 等) 特别是,我想编写并理解 C++ FAQ Lite 的引用计数示例,但
因此,我只想将智能指针与boost分开,以便在我的项目中使用,因此我被引导使用bcp实用程序。 今天,我将其编译并执行bcp smart_ptr to_copy_to_my_project/。 结果:
我在一个容器中使用 boost::scoped_array,我想进行写时复制,但我担心 scoped_array 无法工作。哪个 boost::smart_ptr 容器最接近 cow-safe 作用域
我找不到一个完整的例子来说明如何消除 shared_ptr 之间的强循环引用。 问题是如何使用 weak_ptr 来“关闭”通用元素链并使用 weak_ptr 访问“下一个”元素。 谢谢。 编辑: 例
scoped_ptr、shared_ptr等boost::smart_ptr可以用在std::map等std容器中吗? class SomeClass { std::map > a_map;
我正在尝试序列化我无法使用 boost::serialization 修改的自定义类,并且我需要将逻辑/计算代码与序列化部分分开。它有一些我必须序列化的 protected 和私有(private)字
我在boost::smart_ptr中找到了以下自旋锁代码: bool try_lock() { return (__sync_lock_test_and_set(&v_, 1) == 0);
我正在关注文件 boost/smart_ptr/detail/operator_bool.hpp 并遇到以下我不理解的代码片段 typedef T * this_type::*unspecified_
我正在尝试在我的 Windows 7 笔记本电脑上轻松开发一个 websocket++ 服务器(vi 还不太好,不想经常使用 ftp)。我将在最后迁移到 Ubuntu 12.10。 我正在使用 Vis
我是一名优秀的程序员,十分优秀!