You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用vector、for循环和unique_ptr创建对象,对应代码报错如何解决?

代码错误点
  • 未声明存储目标对象的vector容器,代码中的auto FZ[i]属于非法语法:C++不支持运行时用auto声明可变长度数组,和你要实现的vector存储需求完全不符
  • push_back是vector的成员方法,不能直接用智能指针对象/数组元素调用,调用逻辑错误
  • 重复调用make_unique创建对象,操作冗余
  • make_unique调用缺少构造函数的括号,语法错误
  • 手动加std::move多余:make_unique返回值本身是右值,push_back时会自动触发移动语义
修正后可运行代码
#include <vector>
#include <memory>
#include <iostream>
#include <string>

// 需提前定义Fahrzeug类,此处为示例实现
class Fahrzeug {
public:
    std::string p_sName;
};

void vAufgabe_1a() {
    const int num_obj = 3;
    // 声明存储unique_ptr<Fahrzeug>的vector
    std::vector<std::unique_ptr<Fahrzeug>> FZ;
    FZ.reserve(num_obj);

    for (int i = 0; i < num_obj; ++i) {
        FZ.push_back(std::make_unique<Fahrzeug>());
        std::cout << "Der Name des Fahrzeugs: " << std::endl;
        std::cin >> FZ[i]->p_sName;
    }
}
补充说明

std::unique_ptr是独占所有权的智能指针,不支持拷贝操作,往vector中插入时只能通过移动构造完成,std::make_unique返回的右值天然满足该要求,不需要额外处理。

内容的提问来源于stack exchange,提问作者Yağmur Yıldız

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:06:04