[英]Overload subscript operator for base's member
#include <iostream>
#include <string.h> // strlen, strcpy
在這里,我們有一個帶有非默認ctor的Base類,一個用於名稱的getter及其析構函數。
class Base {
char *name_;
public:
Base(const char* str)
: name_{new char[strlen(str)]}
{
strcpy(name_,str);
}
char * name() const
{
return name_;
}
virtual ~Base()
{
delete [] name_;
}
};
派生類公開繼承自Base,並且具有自己的非默認ctor。
class Derived : public Base {
public:
Derived(const char* str)
: Base(str){}
};
我的問題是如何使main中的最后一行代碼起作用?
int main()
{
char d1name[] {"d1"};
Derived d1(d1name);
std::cout << d1.name() << std::endl;
d1.name[0] = 'D';
}
我的問題是如何使main中的最后一行代碼起作用?
只需添加括號即可調用getter
d1.name()[0] = 'D';
// ^^
但是總的來說,這不是一個好主意。 然后,您可以將基類中的char
數組public
,甚至更好地使用std::string
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.