-3

我有一个超类“BoardMain”和 6 个成员,它们是这个主函数的子类。

但是,当我尝试在其中一个子类中调用特定函数时,出现错误

“无法分配抽象类型的对象”

我只能访问“BoardMAin”超类,它应该调用其中一个子类中的特定函数。

请帮忙

Class Someother
{
  Boardmain.functionA();
}


class BoardMain
{
functionA 
{
   B();
}

}

Class B1:public BoardMain() 
{
B(){
}
}
4

2 回答 2

2

我将尝试解释代码中的所有错误:

Class Someother
{
    Boardmain.functionA(); // Error 1
}


class BoardMain
{
    functionA // Error 2
    {
       B();   // Error 3
    }

}

Class B1:public BoardMain() // Error 4
{
    B(){ // Error 5
    }
}

错误 1

您直接在类中调用方法,这在 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......它会给你一个错误......

错误 2

您正在声明一个没有返回类型且没有参数的函数,这在 C++ 中也是不可能的。至少()是构造函数所需要的。

这个例子是正确的:

class BoardMain
{
    void functionA() // Does not return anything and does not take argument
    {
    }
};

错误 3

您正在调用一个名为 的函数B,但是.... 它是什么?中声明的方法B1

错误 4

当一个类从另一个类继承时,正确的声明是:

class B1:public BoardMain  // no () a the end

错误 5

同样,您没有正确声明此方法。如果你希望它是一个构造函数,它应该与类同名:

class B1 : public BoardMain
{
    B1(){    // Private constructor
    }
};

顺便说一句,class关键字在 C++ 中总是小写。并且在声明的末尾有分号class


你应该买一本好书来学习C++,看来你需要它。

这是有关以下内容的文档classhttp ://www.cplusplus.com/doc/tutorial/classes/

于 2013-08-16T19:45:11.973 回答
0

您应该为您希望实例化的派生类实现所有基类的所有纯虚方法。

您的错误消息表明您的代码中的某些时候并非如此(您没有向我们展示)。

于 2013-08-16T19:29:35.907 回答