如何在c ++

时间:2017-10-11 07:04:39

标签: c++

我想制作三个[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;
}

3 个答案:

答案 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; 
}

也可以工作