使用Parent构造函数初始化子类
Using the Parent constructor to initialize a child class
我想创建一个名为Button的通用类,让其他人从中继承,这样我就可以拥有StartButton、ContinueButton等。无论我想用构造函数启动哪些不同的属性,都有一些值,因为它们总是需要的,所以我构建了自己的Button类,如下所示:
#pragma once
#include "ofMain.h"
class Button {
public:
Button(ofPoint _pos, string _text);
virtual void setup();
virtual void update();
virtual void draw();
protected:
ofTrueTypeFont buttonName;
ofPoint pos;
string text, fontName;
bool isClicked;
int buttonFader, buttonFaderVel;
};
这是实现Button.cpp:
#include "Button.h"
Button::Button(float _pos, string _text): pos(_pos), text(_text){
cout << pos << endl;
cout << text << endl;
}
void Button::setup(){
fontSize = 19;
fontName = "fonts/GothamRnd-Medium.otf";
buttonName.loadFont(fontName, fontSize);
cout << text << endl;
}
void Button::update(){
}
void Button::draw(){
ofSetColor(255);
buttonName.drawString(text, pos ,pos);
}
现在,当我创建我的第一个子对象时,我会执行以下操作:
#include "Button.h"
class StartButton: public Button{
public:
StartButton(ofPoint _pos, string _text): Button(_pos, _text){};//This is how I use the parent's constructor
};
现在在我的main.cpp中。我想,因为我在创建类时使用了父级的构造函数,所以我可以像这样使用父级的构造器:
int main {
StartButton *startButton;
ofPoint pos = ofPoint(300,300);
string text = "Start Button"
startButton = new StartButton(text, pos);
}
出于某种原因,当我运行它并打印Button类中的pos和文本的值时。它打印字符串,但不打印位置。当信息初始化时,将信息从子项传递给父项肯定会出现问题。
StartButton
只有一个构造函数:
StartButton(): Button(pos, text){};
其尝试用垃圾来初始化基础CCD_ 2。您需要一个合适的StartButton
:构造函数
StartButton(ofPoint _pos, string _text) : Button(_pos, _text) {}
或者,如果您能负担得起C++11,则从Button
:继承构造函数
using Button::Button;
相关文章:
- C++类 - 初始化列表 - 递归 - 按值传递
- 何时为派生类初始化 vptr?
- 虚拟基类初始化
- 类初始化中的静态 lambda
- C++ 使用向量进行类初始化
- 您可以在类初始化器列表中定义数组大小吗?
- C++11 成员类初始化顺序
- 大括号使用枚举类初始化静态常量unordered_map
- 类初始化中的指针初始化
- Arduino 类初始化执行
- 为什么我们需要模板 <int N>,因为我们有类初始化
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 如何防止在基类初始化器中调用默认构造函数?
- 为什么"new"在类初始化中失败
- 从模板类初始化对象时出错.参考类模板实例化
- 如何将断言放在类初始化列表之前
- 使用不同的类初始化对象
- 类初始化的const参考
- 使用MSVC 2013的类初始化器中的C++11
- 如何在派生类中存储基类初始化期间获得的信息