0

我正在做一个 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

提前致谢

4

1 回答 1

1

精简版:

也许您必须使用public访问修饰符。

长版:

只是一个疯狂的猜测,但也许你遇到了可访问性问题,而不是调用约定问题。我很惊讶可以导出私人班级成员,但也许你毕竟不能?(如果我错了请纠正我)

根据MSDN,“要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左侧......”就像你一样。不过,默认范围是私有的。

于 2013-07-04T07:41:27.553 回答