c++ - 如何在结构中将值传递给std::optional?

标签 c++ optional

我正在尝试使用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/

相关文章:

java-8 - 相当于来自 guava Enums.getIfPresent() 的 java 8 将返回 java.util.Optional?

c++ - 是否有适合度假的标准容器?

python - 尽管初始大小固定,但跟踪对象的 BoundingBox/ROI 的大小不断增加

c++ - 在 QTextEdit 中设置行间距

json - 使用 Kotlin 数据类在 Jackson 中区分 null 和缺失的属性

java - Java 8 ifPresent与三元运算符

f# - F# 4.1 中的新 Result 类型是否有类似于 tryFind 的方法?

C++ 使用智能指针

c++ - 如何找出具有文件路径的字符串中是否有任何非ASCII字符

haskell - 为什么 Maybe 包括 Just?