gpt4 book ai didi

c++ - 函数的多重声明

转载 作者:行者123 更新时间:2023-11-27 23:33:23 26 4
gpt4 key购买 nike

我在我的基类中声明了一个函数并指定为虚拟函数,我试图在派生类中重新声明它,但出现多重声明错误。

有人知道我是否遗漏了什么吗?

class Field {
public:
virtual void display() = 0;
virtual int edit() = 0;
virtual bool editable() const = 0;
virtual void *data() = 0;
virtual Field *clone() const = 0;
};

class LField : public Field {
int rowNum;
int colNum;
int width;
char *val;
bool canEdit;
int index;
public:
virtual void *data() { return val; }
};


class IVField : public LField {

void (*ptrFunc)(void *);
bool (*ptrValid)(int &);
int *data;

public:
void* data() {
return data;
}

};

class DVField : public LField {
int decimalsToDisplay;
double *data;
void (*ptrFunc)(void *);
bool (*ptrValid)(double&);
public:

void* data() {
return data;
}

};

最佳答案

您在同一个类中有一个名为data 的函数和一个名为data 的成员变量。那是不允许的。为您的成员变量选择一个不同的名称。

您似乎还重新声明了许多成员变量。这可能不是您想要做的。如果您想在基类中声明它们并在后代中使用它们,那么它们可能应该具有protected 可见性。当您没有指定任何其他类时,类的默认可见性是 private,这意味着,例如 IVField 的后代(例如 DVField) 无法访问您在 IVField 中声明的 ptrFunc 变量。您在 DVField 中声明的 ptrFun 变量与在父类中声明的变量完全没有关系。使 IVField 成为 protected ,这样后代就不需要为自己复制声明。

在编译器允许您实例化任何这些类之前,您还必须实现所有其他抽象方法。

关于c++ - 函数的多重声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com