【问题标题】:unique pointer class member唯一指针类成员
【发布时间】:2017-08-19 10:57:17
【问题描述】:

我现在正在学习 C++ 类中的构造函数、析构函数和内存。我想要一个类中的向量。我在写“return muchs->at(dimension);”时不断出错,这段代码有问题吗?

编辑: 抱歉,错误是“应用 -> 到唯一指针而不是原始指针”,这是来自 Clion,可能是 IDE 错误?

除了错误之外,我主要将它包装在一个智能指针中,因此没有内存泄漏,或者这不可能吗?析构函数会一直被调用吗(抱歉还在学习析构函数)。

#include <iostream>
#include "EuclideanVector.h"
#include "../catch.hpp"
#include <memory>

namespace evec{

    class EuclideanVector{
    public:
        //constructors
        EuclideanVector(): EuclideanVector(1){};
        EuclideanVector(unsigned int size): magnitudes(std::make_unique(new std::vector<double>(size,0.0))){}

        double get(int dimension){
            return magnitudes->at(dimension);
        }
    private:
        std::unique_ptr<std::vector<double>> magnitudes;

    };
}

【问题讨论】:

标签: c++ c++14 smart-pointers


【解决方案1】:

问题来了

EuclideanVector(unsigned int size): magnitudes(std::make_unique(new std::vector<double>(size,0.0))){}

将此行改为

EuclideanVector(unsigned int size): magnitudes(std::make_unique<std::vector<double>>(size,0.0)){}

因为std::make_unique是一个模板,所以没有必要使用new

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多