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;
一条红线在"字符串"的下面。我该如何删除它?
以下编译良好:
#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
这取决于你的意图。