我想创建一个具有纯虚函数的抽象类,该函数由非纯虚的构造函数调用。下面是我的文件class.hpp
:
#ifndef __CLASS_HPP__
#define __CLASS_HPP__
#include <iostream>
class Parent {
public:
Parent(){
helloWorld(); // forced to say hello when constructor called
};
virtual void helloWorld() = 0; // no standard hello...
};
class Child : public Parent {
public:
void helloWorld(){ // childs implementation of helloWorld
std::cout << "Hello, World!\n";
};
};
#endif
在此示例中,我有一个具有纯虚函数的父类helloWorld()
。我希望每个派生类在调用构造函数时都说“你好”;因此为什么helloWorld()
在父类构造函数中。但是,我希望每个派生类都被强制选择它如何说“你好”,而不是使用默认方法。这可能吗?如果我尝试使用 g++ 编译它,我会收到构造函数正在调用纯虚函数的错误。我main.cpp
的是:
#include "class.hpp"
int main(){
Child c;
return 0;
}
我正在编译使用g++ main.cpp -o main.out
,结果错误是:
In file included from main.cpp:1:0:
class.hpp: In constructor ‘Parent::Parent()’:
class.hpp:9:16: warning: pure virtual ‘virtual void Parent::helloWorld()’ called from constructor [enabled by default]
有关如何以合法方式获得类似设置的任何建议?
新问题
DyP 引起了我的注意,构造函数不使用任何重写的函数,所以我想要做的事情在我设置它的方式上是不可能的。但是,我仍然想强制任何派生构造函数调用该函数helloWorld()
,有什么办法吗?