我在一个类中有一个可选成员,我想通过一个方法按值返回。示例代码:
#include <stdio.h>
#include <optional>
#include <iostream>
using namespace std;
class bar {
public:
int a;
bar(const bar &obj) {
a = obj.a;
}
};
class foo {
public:
void init(){
abc->a = 100;
}
optional<bar> get() {
return abc;
}
optional<bar> abc;
};
int main()
{
foo temp;
temp.init();
auto copied = temp.get();
cout << "Expected value is 100, got: " << copied->a;
return 0;
}
该代码输出一些垃圾值。
我怎样才能做到这一点?
根据我的理解, optional 为底层类型(不仅仅是一个引用)存储了一个完全分配的内存,并且在返回一个可选变量时,底层类型的复制构造函数应该启动,它应该将内存原样复制到新的返回的可选值。