唯一的指针类成员

unique pointer class member

本文关键字:成员 指针 唯一      更新时间:2023-10-16

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

编辑: 抱歉,错误是"将 -> 应用于唯一指针而不是原始指针",这是来自 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;
};
}

问题就在这里

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