我有一个SuperClass“BoardMain”和6个成员,它们是这个主要功能的子类。
但是,当我尝试在其中一个子类中调用Specific函数时,我收到错误
“无法分配抽象类型的对象”
我只能访问“BoardMAin”超类,它应该调用其中一个子类中的特定函数。
请帮助
Class Someother
{
Boardmain.functionA();
}
class BoardMain
{
functionA
{
B();
}
}
Class B1:public BoardMain()
{
B(){
}
}
答案 0 :(得分:2)
我将尝试解释代码中的所有错误:
Class Someother
{
Boardmain.functionA(); // Error 1
}
class BoardMain
{
functionA // Error 2
{
B(); // Error 3
}
}
Class B1:public BoardMain() // Error 4
{
B(){ // Error 5
}
}
你正在一个类中直接调用一个方法,这在C ++中是不可能的。从方法中调用它。
在尝试静态地从另一个类调用方法之后,我的意思是不在对象的实例上。在这里你必须选择:
Boardmain
static
类中静态声明此方法
创建Boardmain
的实例并调用方法,例如:
class Someother
{
public: // public accessibility
Someother() // Constructor of the class
{
Boardmain obj; // Object creation
obj.functionA(); // Calling the method
}
};
最后一点,在您声明类Someother
的时候,编译器仍然不知道类Boardmain
......这里会给你一个错误......
你声明一个没有return-type且没有参数的函数,这在C ++中是不可能的。至少构造函数需要()
。
这个例子是正确的:
class BoardMain
{
void functionA() // Does not return anything and does not take argument
{
}
};
你正在调用一个名为B
的函数,但......它是什么?在B1
?
当一个类从另一个继承时,正确的声明是:
class B1:public BoardMain // no () a the end
您再次没有正确声明此方法。如果您希望它是一个构造函数,它应该与该类具有相同的名称:
class B1 : public BoardMain
{
B1(){ // Private constructor
}
};
顺便说一下,class
关键字在C ++中以小写字母始终。在class
声明的末尾有分号。
你应该买一本好书来学习C ++,看来你需要它。
的文档答案 1 :(得分:0)
您应该为要实例化的派生类实现所有基类的所有纯虚方法。
您的错误消息表明代码中的某些情况并非如此(您尚未向我们展示)。