【问题标题】:C++ Save pointer of object created in functionC++保存函数中创建的对象的指针
【发布时间】:2015-12-17 16:55:51
【问题描述】:

我有一个名为 Rectangle 的结构:

 struct Rectangle {
    std::vector<float> m_min;
    std::vector<float> m_max;
    exType timeOfArrival, timeOfexpiry;
    unsigned int id;
};

在一个函数中,我通过值传递一个矩形并将对象保存到数据库中。我想返回矩形的指针,以便我可以在函数之外使用它并将它(指针)保存在向量中。根据我从 C++11 开始阅读的内容,不需要返回指针,所以我返回矩形。这是正确的方法吗?如何获得指向函数中创建的对象的指针?

这就是我现在的做法:

Rectangle Insert(Rectangle rect){// "Insert" is a function of another class
    SaveIntoToDB(rect);// Calls other functions that use reference
    return rect;
}

我需要一些不会在内存中产生重复的快速的东西。

【问题讨论】:

  • 不清楚您的要求。在函数调用之前似乎存在rect - 那么为什么需要返回它。另外,SaveIntoDB 是否修改rect
  • 嗯,我有一个不适合内存的大文件,所以我读取了一些矩形并将它们存储到数据库中。不,SaveIntoDB 不会修改矩形。
  • 查看 Roddy 的代码 sn-p 下面的代码几乎可以满足您的需求。
  • 既然rect是来电者发出来的,为什么还要还给他呢?他已经在他在通话期间使用的变量中包含了它。

标签: c++ pointers object memory


【解决方案1】:

这会有什么问题?

void Insert(const Rectangle &rect)
{
 ...
}

像这样称呼

Rect myrect = something...;
Insert(myrect);
doSomething(&myrect);  // Do something with pointer to myrect

通常,根据您的问题和代码,您应该在此阶段完全避免使用指针。

【讨论】:

  • 那么矩形不适合内存(数十亿),所以我使用了一个将它们插入数据库的库。我想只使用从 DB 函数创建的对象来操作它们。
  • @TheShadow 所以你想在你的数据库中存储数十亿个标识特定对象的唯一值? “指针”只能指向内存,不能指向数据库。如果
猜你喜欢
  • 2013-03-07
  • 2019-03-29
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
相关资源
最近更新 更多