子类中的 C++ 构造函数
C++ constructors in subclass
我想将派生的构造函数 Buttom(string)
发送到基类中的函数 setText(string)
,我尝试这样做
Buttom(string) : setText(string text){}
... 这给了我以下语法错误:
Syntax error - expected primary-expression before ‘text’ - class ‘Buttom’ does not have any field named ‘setText’
基础class:
#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;
};
派生class:
#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){}
您不能使用 class 成员初始值设定项列表以这种方式调用 class 成员函数。
您可以改为在构造函数的主体中调用它,如下所示:
Buttom(string s) : Widget() {
setText(s);
}
我想将派生的构造函数 Buttom(string)
发送到基类中的函数 setText(string)
,我尝试这样做
Buttom(string) : setText(string text){}
... 这给了我以下语法错误:
Syntax error - expected primary-expression before ‘text’ - class ‘Buttom’ does not have any field named ‘setText’
基础class:
#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;
};
派生class:
#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){}
您不能使用 class 成员初始值设定项列表以这种方式调用 class 成员函数。
您可以改为在构造函数的主体中调用它,如下所示:
Buttom(string s) : Widget() {
setText(s);
}