不允许使用抽象类类型Rectangle的对象

时间:2015-11-19 23:58:54

标签: c++ polymorphism abstract-class

这是我的基类:

public class Adapter1 extends ArrayAdapter<String> {

    private final Activity context;
    private final String[] string1;
    private final String[] stringpic;



    public Adapter1(Activity context, String[] name, String[] pic) {
        super(context, R.layout.row, name);

        this.context = context;
        this.string1 = name;
        this.stringpic = mpic;           
    }


    @Override
    public View getDropDownView(int position, View convertView,ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }


    public View getCustomView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.row, parent, false);
        TextView txtname = (TextView) rowView.findViewById(R.id.textView);           
        ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView); 



 // write your statements in here for example
 if (string1[position] != null) {
           txtname.setText(string1[position]);
        }

    return rowView;
}
}

这是我的子类:

class Shape{
public:
Shape(){}
virtual double computeArea()=0;
virtual void expand(int f)=0'
virtual void display()=0;
}

然后,我主要尝试这样做:

class Rectangle : public Shape{
protected:
double width;
double height;
public:
Rectangle(){width = 0; length = 0;}
Rectangle(double w, double l){width = w; length = l}

double computeArea(){//code}
void expand(int f){//code}
void display(){//code}
}

我一直得到“抽象类类型的对象”矩形“不允许” 我很自信我正在超载这些功能......请帮忙。

1 个答案:

答案 0 :(得分:0)

如果我们无法确定您提供的确切代码,我们无法提供帮助。由于我在此处看到至少两个语法错误,因此会拒绝编辑 WELL BEFORE 警告某个类缺少vtable。

virtual void expand(int f)=0'  // <- this ' should be a ;

void expand(int f){//code}此处没有结束}。因此,无法诊断您的问题。

现在允许消息&#34;抽象类类型Rectangle的对象&#34; 意味着确保在Rectangle中不会覆盖纯虚方法类。现在,如果因为签名不同,或者大括号不平衡或者您可能已经介绍过的任何其他奇怪的语法问题而发生这种情况,我们就无法知道。

我可以给出的唯一建议是在override中的方法声明之后添加Rectangle关键字,以强制验证正确的覆盖并具有更详细的错误消息。例如:

void expand(int f) override { /* code */ }