【发布时间】:2019-11-04 16:41:54
【问题描述】:
我的基类中有两个虚函数,但其中一个不工作。我不知道它有什么问题。有人会帮我吗?
我尝试将虚拟方法“唯一”更改为纯虚拟方法,它会引发错误,提示“未定义纯虚拟函数”。 “打印”似乎可以正常工作,但“唯一”不起作用。
#include <iostream>
#include "polymor.h"
void print (std::vector<Base *> b)
{
for (int i = 0; i < b.size(); ++i)
{
b[i]->print();
b[i]->unique();
}
}
int main()
{
std::vector< Base * > pointers;
Base * b1 = new Derived1();
Base * b2 = new Derived2();
pointers.push_back(b1);
pointers.push_back(b2);
print (pointers);
return 0;
}
//polymor.h:
#ifndef POLYMOR_H
#define POLYMOR_H
#include <iostream>
class Base
{
public:
virtual void print()
{
std::cout << "Base\n";
}
virtual void unique()
{
std::cout << "BaseUnique\n";
};
};
class Derived1: public Base
{
public:
void print()
{
std::cout << "Derived1\n";
}
void unqiue()
{
std::cout << "Der1Unique\n";
}
};
class Derived2: public Base
{
void unqiue()
{
std::cout << "Der2Unique\n";
}
};
#endif```
This is my output:
Derived1
BaseUnique
Base
BaseUnique
【问题讨论】:
-
欢迎来到 SO,感谢您以实际的 minimal reproducible example 开始!
标签: c++ inheritance overriding virtual