问题真的很简单。我有一个代码:
options
第一个版本(qt)给我一个编译错误,而std的版本工作正常。我已经看过std :: vector源代码,并且我想(或多或少)了解那里发生了什么,但是我找不到QVector的源代码(我已经看过Qt repository)。
问题是:#include <string>
#include <memory>
#include <vector>
#include <boost/variant.hpp>
#include <QVector>
int main() {
QVector<boost::variant<std::unique_ptr<std::string>, int>> qt_vector;
std::string* qt_test = new std::string;
qt_vector.push_back(std::unique_ptr<std::string>(qt_test));
std::vector<boost::variant<std::unique_ptr<std::string>, int>> std_vector;
std::string* std_test = new std::string;
std_vector.push_back(std::unique_ptr<std::string>(std_test));
}
和std::vector::push_back
有什么区别?在这种情况下,我可以使用QVector::push_back
而不是QVector
来做什么。
P.S。。我想要一个std::vector
的向量,这个示例与我在主代码中尝试做的非常相似。我尝试使用boost::variant<std::unique_ptr<std::string>, int>
,因为在我的应用程序的所有其他部分中,我还使用了Qt容器
PS 。错误消息是:
QVector
PS 此问题与this one不同,因为它询问特定于的示例,并提供了由上述问题引起的问题的上下文题。我还提供了一个具体示例,该示例对于试图了解问题的人可能有用。