如何在C++中推断引用返回结果的类型?

ve7v8dk2  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(104)

请考虑:

#include <iostream>

struct Item {
    Item(int Value = 0, std::string AsoName = "NULL") : Value{Value}, AsoName{AsoName} {}

    int Value;
    std::string AsoName;

    auto& operator->() {
        if (/*what*/) {
            return AsoName;
        }
        else {
            return Value;
        }
    }
};

int main() {
    Item a(10,"Name");
    a.operator->() = "Other Name";
    a.operator->() = 5;
}

字符串
我试图通过引用使用->运算符更改ValueAsoName,但如何才能知道新值“Other Name”和5的类型?只是为了学习。

bksxznpy

bksxznpy1#

你搞反了。将operator->成员函数替换为以下内容:

Item& operator= (const std:string &s)
{
    AsoName = s;
    return *this;
}

Item& operator= (int i)
{
    Value = i;
    return *this;
}

字符串
然后你可以做:

a = "Other Name";
a = 5;

相关问题