Klo*_*mes -3 c++ smart-pointers vector init nullptr
由于某种原因,我不能在datacenter.cpp中使用vector _vec.它说" 这个 "是"nullptr"
请帮助,谢谢<3
datacenter.h
#pragma once
#include <iostream>
#include <vector>
class datacenter
{
public:
datacenter();
~datacenter();
void get_elements();
std::vector<float> _vec;
};
Run Code Online (Sandbox Code Playgroud)
datacenter.cpp
#include "datacenter.h"
datacenter::datacenter(){}
void datacenter::get_elements()
{
if (_vec.empty()) { //<---- the error appears here
std::cout << "empty" << std::endl;
}
}
datacenter::~datacenter(){}
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include <iostream>
#include <vector>
#include "datacenter.h"
class datacenter;
int main()
{
std::unique_ptr<datacenter> dc;
dc->get_elements();
}
Run Code Online (Sandbox Code Playgroud)
麻烦来自:
std::unique_ptr<datacenter> dc;
Run Code Online (Sandbox Code Playgroud)
这不会创建一个实例datacenter,而只是一个(null)(智能)指针.您需要使用以下命令创建实例:
auto dc = std::make_unique<datacenter>();
Run Code Online (Sandbox Code Playgroud)