唯一指针类成员

时间:2017-08-19 10:57:17

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

我现在正在学习C ++类中的构造函数,析构函数和内存。我想要一个类中的向量。在写入"返回幅度 - >(维度)时,我一直收到错误; "这段代码有问题吗?

编辑: 抱歉,错误是"申请 - >到了唯一的指针而不是原始指针",这是来自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;

    };
}

1 个答案:

答案 0 :(得分:0)

问题在这里

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