我想制作三个[0] ='p';在下面的代码中工作。我想我必须让操作员超载,但我不知道该怎么办。我想要的是改变“彩票赢家”的第一个索引!最佳'。 (获得“陶艺冠军!”)。
#include<iostream>
#include<cstring>
using namespace std;
class str
{
char* a;
public:
str(char *aa=""){
this->a = new char[strlen(aa)+1];
strcpy(a,aa);
}
~str(){
delete a;
}
friend ostream& operator<<(ostream &out, str &aa);
friend istream& operator>>(istream &in, str &aa);
};
ostream& operator<<(ostream &out, str &aa){
out<<aa.a;
return out;
}
istream& operator>>(istream &in, str &aa){
in>>aa.a;
return in;
}
void main(){
str three("Lottery winner!");
three[0]='p';
cout<<three<<endl;
}
答案 0 :(得分:1)
这是operator[]
:
T& operator[](any_type);
在您的上下文中,它看起来像这样:
struct str {
...
char& operator[](std::size_t pos) {
return a[pos];
}
};
答案 1 :(得分:0)
class str
{
// ...
public:
// ...
char& operator[] (int x)
{
// add array out-of-bounds check here if you like to ...
return a[x];
}
}
答案 2 :(得分:0)
operator char*()
{
return a;
}
也可以工作