#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';
}
答案 0 :(得分:0)
我的问题是如何让main中的最后一行代码工作?
只需添加括号即可调用getter
d1.name()[0] = 'D';
// ^^
但总的来说,这不是一个好主意。您可以在基类char
中创建public
数组,或者甚至更好地使用std::string
。