使用to_string时如何删除红线?

问题描述 投票:0回答:1
template<typename T, int>
class Array {
    int x;
public:
    Array() { }
    int& operator [](int idx) { return idx; }
    operator string() const { return "("string"s + to_string(x))"; }
};

int main()

    Array<string, 10> a;
    for (int i = 0; i < 10; ++i)
            a[i] = "string"s + to_string(i);
    for (int i = 0; i < 10; ++i)
            cout << a[i] << endl;

红线在“字符串”下。我该如何删除?

c++ operator-keyword
1个回答
1
投票

以下编译正常:

#include <string>
using namespace std;

template<typename T, int>
class Array {
    int x;
public:
    Array() { }
    int& operator [](int idx) { return idx; }
    operator string() const { return "string"s + to_string(x); }
};

int
main()
{
    Array<bool, 42> a;
    return 0;
}

我必须更改:

"("string"s + to_string(x))"

"string"s + to_string(x)

或者可能是(如评论中所述)

"("s + to_string(x) + ")"s

仅取决于您的意图。

© www.soinside.com 2019 - 2024. All rights reserved.