как указать на shared_ptr - PullRequest
       7

как указать на shared_ptr

1 голос
/ 21 февраля 2012

Итак, у меня есть shared_ptr в моем классе Main, и я бы хотел, чтобы какой-то другой объект (одноэлементный класс) имел доступ к тому, на что указывает shared_ptr.

в псевдокоде ...

mySingletonInstance->somePointer = myShared_ptr;

Как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 22 февраля 2012

Если синглтон должен участвовать в совместном управлении объектом, который содержится в shared_ptr, то это somePointer может быть просто копией этого shared_ptr.В противном случае используйте слабый_птр.

0 голосов
/ 22 февраля 2012

Если вы не хотите, чтобы mySingletonInstance->somePointer уважал семантику владения shared_ptr, тогда:

class MySingletonClass {
    SomeType* somePointer;
}
shared_ptr<SomeType> myShared_ptr;
...
// Then either of the following lines:
mySingletonInstance->somePointer = mySharedPtr.get();
mySingletonInstance->somePointer = &*mySharedPtr;

Но будьте осторожны - ваш somePointer может содержать указатель на объект даже после того, как он был удален.

...