我正在从事Visual Studio项目
header.h
class A
{
virtual int __cdecl funct1() = 0;
};
项目B(在编译时生成DLL)
//projectBheader.h
#include<header.h>
#define projectBclass_DLL __declspec( dllexport )
class projectBclass_DLL projectBclass: public A
{
virtual int __cdecl funct1();
}
//projectBheader.cpp
A::int __cdecl projectBclass::funct1()
{
//definition goes here
}
但它给了错误
error C2695: 'projectBclass::funct1': overriding virtual function differs
from 'A::funct1' only by calling convention
提前致谢
最佳答案
精简版:
也许您必须使用public
访问修饰符。
长版:
只是一个疯狂的猜测,但是也许您遇到了可访问性问题,而不是调用约定问题。我很惊讶地看到一个人可以导出私人班级成员,但是也许您毕竟不能这样做? (如果我错了,请纠正我)
根据MSDN,“要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左侧……”。
不过,默认范围是私有的。
关于c++ - DLL生成的项目中的覆盖虚拟功能有所不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17463795/