class YourInterface {
public:
YourInterface(){
}
virtual ~YourInterface(){
}
virtual void saveData(Data data) = 0; //Pure virtual = Childs are forced to implement those functions to become non abstract
virtual Data loadData() = 0;
};
//One implementation to load and save data to/from a xml file
class XmlImplementation : public YourInterface {
public:
XmlImplementation(){
}
virtual ~XmlImplementation(){
}
//Overriding functions:
void saveData(Data data){
//Save data to a xml file here
}
Data loadData(){
//Load data from a xml file here
}
};
void main(){
YourInterface* p;
p = (YourInterface*) new XmlImplementation();
p->loadData(); //We just want to get our Data here, we dont care whether its from a xml or binary file etc.
}
请以此为例,我知道这不好,但我写不出更好。
我想更好地了解为什么主要演员拒绝正常工作?并且它被认为是一个错误的演员。
答案 0 :(得分:3)
代码没有错,只是演员实际上是不必要的。如果没有它,代码将编译并正常工作。
答案 1 :(得分:2)
此处不需要(C风格或其他方式)演员。您的main()
函数(应始终返回int
)应如下所示:
int main()
{
YourInterface* p = new XmlImplementation();
p->loadData();
}
如果你收到错误,那不是因为演员。
N.B :在C ++中,当从指向派生类的指针到指向基类的指针进行类型转换时,习惯使用static_cast
。