相关疑难解决方法(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万
查看次数

是否有可能在c ++中编写敏捷的Pimpl?

我一直在玩Pimpl成语并从中获得各种好处.我唯一不太关注的是我在定义函数时得到的感觉.

  • 一旦进入标题(P def)
  • 一旦位于.cpp的顶部(Impl def)
  • 一旦进入.cpp(Impl Impl)的中间
  • 一旦到达.cpp(P Impl)的下端

我真的很喜欢减少代码差异和冗余,当我必须在当前项目中相对复杂的Impls中添加或更改函数时,我觉得我的代码不够好.

我的问题是,有哪些有效的方法可以暗示或模板化我的类,如果我要定义一个新函数,我只需编写一个明确的定义和实现,其余的仍然在空间上接近于代码中的明确; 如果我要更改功能,必要的更改将尽可能少?

c++ pimpl-idiom c++11

6
推荐指数
2
解决办法
1657
查看次数

标签 统计

c++ ×2

c++11 ×2

pimpl-idiom ×1

stl ×1

unique-ptr ×1

visual-studio-2010 ×1