将对象添加到向量
Adding an object to a vector
这是我在这个网站上的第一个问题,但我会尽力涵盖所需的一切。如果我忘了什么,我道歉。我在使用QT Creator时遇到了这个问题,但我想使用Visual Studio或C++时也会遇到同样的问题。
我有几个课程:主窗口,跟踪和AddForm。主窗口就是它的名称。Track是一个基于QObject的自定义类,它只包含一个QString变量(只是现在,因为我还在试验QT)。AddForm是另一个表单的类,可以通过单击MainWindow表单中的一个按钮来创建。该表单只包含一行用于填充字符串的编辑和一个显示"添加"的按钮。每当按下该按钮时,行编辑中的文本将被放入Track类的QString变量中。这个QString变量被称为"艺术家"。
除了将行编辑中的文本指定给Track对象的变量"artist"之外,表单还将发出一个发送整个对象的信号。我的主窗口中的一个插槽将对该信号作出反应,并收集Track对象。到目前为止还不错。
这是我的问题。在我的主窗口标题中,我创建了一个名为trackVector的私有QVector,然后我可以在我的mainwindow.cpp中调用它。我想做的是用Track对象附加/push_back QVector。有点像这样:
trackVector.push_back(trackObject);
构建应用程序时,我收到以下错误消息:点击此处查看屏幕截图
当然,对于一个整数或任何其他变量,这是非常简单的。我想你会做这样的事情:
QVector<int> myVector;
myVector.push_back(3);
我认为,无论何时附加QVector(或标准的非QT向量),都需要使用该类的构造函数。但是,我如何才能创建一个构造函数,在其中只放入一个已经存在的对象?
由于我不是以英语为母语的人,请尽可能多地用简单的单词解释:)提前谢谢!
您发布的代码不足(因此您的帖子可能会被关闭为脱离主题——这是so上的一个经典初学者错误),但我认为这里合适的解决方案是使用一些自动指针类型。如果您的TrackVector
是保留Track
对象的所有权,那么最好的解决方案是使用std::unique_ptr<Track>
元素:
std::vector<std::unique_ptr<Track>> TrackVector;
// filled like
TrackVector.emplace_back(new Track(args));
另一方面,如果所有权在其他地方,您可以使用std::shared_ptr
甚至原始指针(前提是您的布局保证指向Track
对象的生存期超过TrackVector
的生存期)。
- 有没有办法向这个向量添加元素?
- 这种方式是否可以接受向向量添加unique_ptr?
- 向向量添加元素
- 无法向向量添加回调
- 如何将向量添加到结构中以创建一个库存系统,在该系统中,我可以仅使用一个结构向系统添加多种不同的葡萄酒
- 在一个类中向向量添加元素不适用于其他类
- 以下向 c++ 向量添加元素的方法有什么区别
- 我可以在不推送向量的情况下向向量添加值吗?
- 向向量C++添加对
- 使用单词键将多个行号的向量添加到我的地图中
- 在C++中向指针数组中的向量添加元素
- 要创建一个一开始没有特定维度的类Vector,请在类中创建一个方法,允许向向量添加维度
- 一次向 C++ 向量添加多个元素
- STL - 向存储在 STL 映射中的向量添加值
- 向向量添加向量
- 如何向结构类型的向量添加点
- 为什么我的课'当我向向量添加实例时,会调用s析构函数
- 向c++向量添加新字段
- 在c++中向向量添加对象vs向向量添加指针
- 当Type为unique_ptr时,为向量添加运算符[]