我现在正在学习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;
};
}
答案 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
。