gpt4 book ai didi

c++ - 转换运算符中的段错误(对成员的引用)

转载 作者:行者123 更新时间:2023-11-28 01:50:41 25 4
gpt4 key购买 nike

为什么这会导致段错误?

#include <iostream>

struct A
{
std::string str;

A(std::string const& pstr) : str(pstr)
{}

operator std::string const&() const { return str; }
};

bool operator==(A const& a, A const& b)
{ return std::string(a) == b; }

int main()
{
A a1("hola"), a2("adios");

std::cout << (a1 == a2) << std::endl;

return 0;
}

毕竟在做转换的时候,成员str还活着。

http://coliru.stacked-crooked.com/a/e7453471bc1af93e

最佳答案

您对 operator== 进行了递归调用。 A 的构造函数定义了从 stringA 的隐式转换。要不允许这样做,请将 explicit 添加到构造函数中,但这样您就缺少用于字符串和 A 的 operator==;

关于c++ - 转换运算符中的段错误(对成员的引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com