C++ 错误:虚拟函数的多个定义

C++ 错误:虚拟函数的多个定义,c++,virtual-functions,C++,Virtual Functions,我收到一个错误,说我有多个void print()定义。我是否错误地实现了虚拟化?对我的calculatefees做了同样的事情,但似乎找到了。我的打印功能实现我只是随机打印一些东西来测试它 class clsStudent { virtual void print() = 0; }; 本地学生班 class clsLocalStudent: public clsStudent { virtual void print(); }; class clsInternati

我收到一个错误,说我有多个void print()定义。我是否错误地实现了虚拟化?对我的calculatefees做了同样的事情,但似乎找到了。我的打印功能实现我只是随机打印一些东西来测试它

class clsStudent {
    virtual void print() = 0;
};
本地学生班

class clsLocalStudent: public clsStudent {    
    virtual void print();
};
class clsInternationalStudent: public clsStudent {
    virtual void print();
};
国际学生班

class clsLocalStudent: public clsStudent {    
    virtual void print();
};
class clsInternationalStudent: public clsStudent {
    virtual void print();
};

请删除与当前问题无关的所有代码。在这种情况下,这将是所有其他功能,除了打印。但请确保问题仍然存在。多个定义通常意味着您有多个函数定义-因为您发布的代码中没有任何函数定义,很难说什么是错误的-但也许你犯了一些错误,比如在定义函数时忘记了
clsinternational学生::
print
前面…你发布了很多代码,但没有定义
print
。我猜您已经在一个头文件中定义了函数,并且包含了来自多个源文件的函数,因此您最终得到了多个定义。在这种情况下,要么将定义移动到源文件中,要么将其delcare
inline
,要么将其移动到类定义中(这使得它隐式地
inline
)。请添加打印方法的定义,这些方法应该从cpp文件中提取。@MatstPetersson:Gosh没有意识到这一点,为此浪费了1小时。总是看错地方。谢谢大家!