2009-03-17 10 views
12

Điều này không đáng kể nhưng tôi dường như không thể tìm thấy nó (trừ khi không có lớp học như vậy!)Lớp STL cho con trỏ được tính tham chiếu?

Lớp STL (hoặc bộ lớp) cho con trỏ thông minh là gì?

CẬP NHẬT

Cám ơn các câu trả lời,
tôi phải nói Tôi ngạc nhiên không có thực hiện tiêu chuẩn.

tôi đã kết thúc bằng cái này: http://archive.gamedev.net/reference/articles/article1060.asp

Trả lời

14

Ngoại trừ TR1 shared_ptr đã đề cập, không có con trỏ được tính tham chiếu trong STL.

Tôi khuyên bạn nên sử dụng tăng :: shared_ptr (tải xuống tăng sẽ đủ, không có gì để biên dịch, triển khai của nó chỉ là tiêu đề).

Bạn cũng có thể muốn xem qua các con trỏ thông minh từ thư viện Loki (một lần nữa, chỉ thực hiện tiêu đề).

Để biết tổng quan về các con trỏ thông minh có sẵn, hãy xem there.

+3

boost :: shared_ptr là nguồn cảm hứng cho std :: tr1 :: shared_ptr. Sau đó std :: tr1 :: shared_ptr trở thành std :: shared_ptr trong C++ 0x. –

9

Nếu bạn không muốn/không thể sử dụng Boost trình biên dịch của bạn thực hiện TR1, bạn có thể sử dụng shared_ptr (mượn từ Boost):

#include <tr1/memory> 

... 

std::tr1::shared_ptr<Foo> ptr(new Foo); 

Nếu không, không, không có con trỏ thông minh nào ngoại trừ std::auto_ptr trong vanilla STL.

1

Đối với đối tượng COM, sử dụng CComPtr<>.

+1

CComPtr không được tính tham chiếu - chính đối tượng bên dưới là. –

+0

Thật vậy, đó là trường hợp. –

0

Có một sự thay thế thực hiện trong một thời gian trong STL PLUS, xem tại source forge

"STLplus was originally intended as a library to extend the STL by providing missing container data structures such as smart-pointers, matrices, trees and graphs."

3

Thời gian tiến bước trên, trong C++ 11:

std::shared_ptr 
std::weak_ptr 

, vv