我遇到了问题,我不确定从哪里开始。
在这个程序中,您将创建一个名为mystring的类,该类派生自类 串。类mystring应包括:
私有数据成员id,它是一个整数,表示字符串的ID(请参阅函数main()中的示例)。
一个公共方法,构造函数mystring(int,char *),它有两个 参数:整数(int)和字符串(char *)。它应该(1)调用基类 构造函数使用字符串参数(char *)和(2)赋值整数参数(int) 致id。
一个公共方法int getid(),它返回类mystring的id。
到目前为止我所拥有的是什么
class mystring : public string
{
private:
int id;
public:
mystring(int id, char *words);
int getid();
};
mystring::mystring(int id, char *words)
{
string a (words);
this->id = id;
}
int mystring::getid()
{
return id;
}
// If your class is implemented correctly, the main program should work as
//the followings
int main()
{
mystring x(101, "Hello Kitty"); // “hello Kitty” has an ID 101
cout << x.getid() << endl; //display 101
cout << x << endl; //display string value: “Hello Kitty”
cout << x.length() << endl; //display length of the string: 11
return 0;
}
我得到了这个
101
0
答案 0 :(得分:2)
在你的构造函数中,你没有为你的实例调用std::string
基础构造函数,你只是创建一个本地字符串,然后把它扔掉。
改变这个:
mystring::mystring(int id, char *words)
{
string a (words); //creates a local string called a
this->id = id; //initializes id
}
使用初始化列表,如下所示:
mystring::mystring(int id, char *words) :
string(words), //calls the string base constructor
id(id) //initializes id
{}