C++子类中的构造函数
C++ constructors in subclass
我想将我的构造函数Buttom(string)
从我的派生发送到我的基setText(string)
函数,我尝试这样做
Buttom(string) : setText(string text){}
。这给了我以下语法错误:
语法错误 - "text"之前的预期主要表达式 - 类"Buttom"没有任何名为"setText"的字段
基类:
#include"RGB.h"
#include"Point.h"
#include"string"
using namespace std;
class Widget{
protected:
RGB _backgroundColor,_textColor;
Point _position;
int _width,_heigth;
string _text;
public:
Widget();
Widget(const Widget&);
virtual ~Widget();
void setBackgroundColor(const RGB&);
RGB getBackgroundColor() const;
void setTextColor(const RGB&);
RGB getColor() const;
void setPosition(const Point&);
Point getPosition() const;
void setWidth(int);
int getWidth() const;
void setHeigth(int);
int getHeigth() const;
void setText(string text);
string getText() const;
bool isPointInWidget(Point&) const;
virtual void draw() const = 0;
virtual Widget& operator=(const Widget&) = 0;
virtual bool operator==(const Widget&) = 0;
};
派生类:
#include"string"
#include"Widget.h"
class Buttom : public Widget{
public:
Buttom();
Buttom(string);
Buttom(const Buttom&);
~Buttom();
void draw() const;
Widget& operator=(const Widget&);
bool operator==(const Widget&);
};
Buttom(string) : setText(string text){}
不能使用类成员初始值设定项列表以这种方式调用类成员函数。
您可以改为在构造函数的主体中调用它,如下所示:
Buttom(string s) : Widget() {
setText(s);
}
相关文章:
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- 参数包构造函数在类模板中隐藏用户定义的转换
- 具有已删除移动和复制构造函数的类的就地构造
- 创建一个没有复制构造函数的类的 std::vector 的 std::vector
- C++构造函数和类?
- 在 C++ 中,默认情况下构造函数为类的数据成员提供的值是多少?
- 如何在其他类中使用参数化构造函数制作类的对象?
- 具有值包装器的可变参数模板构造函数的类构造函数优先级
- 如何使用私有构造函数对类进行单元测试?
- c++17在编译时将带有已删除复制构造函数的类添加到std::vector
- 从作为模板参数传递给构造函数的类继承,或者从它们继承
- 继承的构造函数忽略类内初始化
- 模板和隐式构造函数的类定义之外的友元声明
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- C++ - 从另一个类构造函数调用类构造函数
- 定义结构中没有默认构造函数的类
- 我可以将 std::move 与不提供 move 构造函数的类一起使用吗?
- 是否可以默认初始化具有已删除默认构造函数的类类型
- C++具有移动和复制构造函数的类中的代码重复
- 没有默认构造函数的类对象的值初始化