我正在尝试使用std::optional,如以下代码所示。
#include <iostream>
#include <optional>
#include <string>
struct Animal {
std::string name;
};
struct Person {
std::string name;
std::optional<Animal> pet;
};
int main() {
Person person;
person.name = "John";
if (person.pet) {
std::cout << person.name << "'s pet's name is " <<
person.pet->name << std::endl;
}
else {
std::cout << person.name << " is alone." << std::endl;
}
}
我想知道如何将值传递给结构的可选参数pet。我试着做
person.pet = std::make_optional<Animal>("Bru");
和person.pet = "Bru"
但是,这些都不起作用。我应该如何在此处将值传递给我的参数?
最佳答案
person.pet = "Bru"
您的pet字段不是字符串,而是Animal
,因此您需要向其传递Animal
实例。尝试以下方法:person.pet = Animal { "Bru" };
或者简单地:person.pet = { "Bru" };
关于c++ - 如何在结构中将值传递给std::optional?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64341691/