相关疑难解决方法(0)

是否需要std :: unique_ptr <T>才能知道T的完整定义?

我在头文件中有一些代码如下:

#include <memory>

class Thing;

class MyClass
{
    std::unique_ptr< Thing > my_thing;
};
Run Code Online (Sandbox Code Playgroud)

如果我有一个CPP这个头不包含的Thing类型定义,那么这并不在VS2010 SP1的编译:

1> C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\include\memory(2067):错误C2027:使用未定义类型'Thing'

替换std::unique_ptrstd::shared_ptr和编译.

所以,我猜这是当前VS2010 std::unique_ptr的实现,需要完整的定义,而且完全依赖于实现.

或者是吗?它的标准要求中是否有某些东西使得std::unique_ptr实施只能使用前向声明?感觉很奇怪,因为它应该只有一个指针Thing,不应该吗?

c++ stl visual-studio-2010 unique-ptr c++11

236
推荐指数
5
解决办法
4万
查看次数

在DLL接口中使用boost :: shared ptr可以吗?

在C++中开发一个返回boost共享指针并将它们用作参数的DLL是否有效?

那么,导出这样的函数是否可以?

1.) boost::shared_ptr<Connection> startConnection();
2.) void sendToConnection(boost::shared_ptr<Connection> conn, byte* data, int len);
Run Code Online (Sandbox Code Playgroud)

特别说明:引用计数是跨越DLL边界还是需要exe和dll使用相同的运行时?

目的是克服对象所有权的问题.所以当dll和exe都不再引用它时,对象会被删除.

dll boost memory-management shared-ptr

10
推荐指数
1
解决办法
3564
查看次数