Cem*_*mre 13 c++ parameters abstract-class
下面的代码段会产生错误:
#include <iostream>
using namespace std;
class A
{
public:
virtual void print() = 0;
};
void test(A x) // ERROR: Abstract class cannot be a parameter type
{
cout << "Hello" << endl;
}
Run Code Online (Sandbox Code Playgroud)
是否存在解决此问题的解决方案/解决方法/更换/更好
virtual void print() = 0;
Run Code Online (Sandbox Code Playgroud)
同
virtual void print() = { }
Run Code Online (Sandbox Code Playgroud)
编辑:我希望能够通过使用多态(即A* x = new B() ; test(x);)传递任何扩展/实现基类A作为参数的类
干杯
das*_*ght 25
由于无法实例化抽象类,因此按值传递几乎肯定是一个错误; 你需要通过指针或引用传递它:
void test(A& x) ...
Run Code Online (Sandbox Code Playgroud)
要么
void test(A* x) ...
Run Code Online (Sandbox Code Playgroud)
按值传递将导致对象切片,几乎可以保证产生意外(以坏的方式)后果,因此编译器将其标记为错误.