【发布时间】:2010-11-09 09:49:05
【问题描述】:
我有一个带有原始指针的向量(不,我不能使用智能指针),我想在 for 循环中将项目添加到列表中。我做了一个小试验项目,我想知道这在指针管理方面是否被认为是好的 C++ 代码。
请只考虑原始指针管理,对于我要解决的这个特定问题,我对智能指针不感兴趣。
一个简单的对象:
class Request
{
public:
std::string name;
};
std::vector<Request*> requests;
for (int i = 0; i < 5; i++)
{
std::stringstream ss;
ss << "elemenent ";
ss << i;
std::string s = ss.str();
Request* req = new Request();
req->name = s;
requests.push_back(req);
}
编辑:
所以我要解决的问题是将 DOMNode* 添加到来自this 库的向量中。
我开始觉得尝试为我的项目需要的这个库中的部分编写一个包装器是一个坏主意。还是图书馆不好?
我还没有使用 smart_ptr 让它正常工作,如果有人有,那么我想听听。
【问题讨论】:
-
如果您不使用智能指针,那么这完全取决于您打算如何清理这些请求。如果这在我们的审核中,我还建议使用构造函数来初始化请求名称。
-
真的不清楚你在问什么。此代码中没有指针管理。您正在堆上创建一些对象,然后永远不要删除它们。
-
真的很简单,我使用的库只使用指针,没有对象有复制构造函数。我需要将其中一些对象添加到列表中,我想知道正确的方法是什么。