也许我试图过于笼统。(下面的原始问题)具体来说,我对Depclass有一些依赖Foo。我也有一个类MockDep,并且正在定义一个类TestFoo。这是我尝试编写的构造函数:
TestFoo(unique_ptr<MockDep> dep) : Foo(std::move(dep)), mock_dep_(dep.get()) {}
AndFoo的构造函数看起来像:
Foo(unique_ptr<Dep> dep) : dep_(dep) {}
mock_dep_在TestFooas中声明MockDep* mock_dep_,并在as中声明。我怎样才能得到包含的地址?(因为上面的内容无效,因为nulls out 。)dep_Foounique_ptr<Dep> dep_mock_dep_dep_std::move(dep)dep
原帖:
我有一个类型的对象Foo,我要传递给另一个OtherObject声称拥有它的类型的对象,但作为指向它的基类的指针。但是,我想获取一个指向可以用来引用它的子对象的指针。我写了类似的东西:
Foo(std::unique_ptr<Child> thing) :
OtherObject(std::move(thing)), child_(thing.get()) {}
OtherObject(std::unique_ptr<Base> thing, ...) { ... }
但是,这似乎不起作用,因为似乎使稍后std::move(thing)返回的指针无效。thing.get()
我可以将Foo' 参数更改为 typeChild*而不是unique_ptr<Child>,但我更希望能够执行后者,因为它明确记录了所有权语义。
解决这个问题的最合适(或失败,不引人注目)的方法是什么?
编辑:Foo并且OtherObject都意味着我正在定义其构造函数的类。