错误:const返回类型的转换无效

时间:2015-10-04 18:28:26

标签: c++ c c++11 g++

使用g ++版本4.8.4我收到错误:

错误:从'const SSL_METHOD *()(){aka const ssl_method_st )()}'无效转换为'MethodFuncPtr {aka ssl_method_st (*)( )''[-fpermissive]

我可以用-fpermissive编译,但是什么是修复?我已经看到了这种类型错误的解决方案,但是当返回类型为const时没有(即使它明确地是一个const返回值)。

来自ssl.h的一个片段(C标题):

hi0
hi1

C ++标题:

#ifdef  __cplusplus
extern "C" {
#endif

  typedef struct ssl_method_st {
    int version;
    int (*ssl_new) (int *s);
    void (*ssl_clear) (int *s);
  } SSL_METHOD;

  const SSL_METHOD *TLSv1_method(void);

#ifdef  __cplusplus
}
#endif

C ++来源:

#include <ssl.h>

extern "C" {
  typedef SSL_METHOD*(*MethodFuncPtr)(void);
}

class Method
{
 public:
  Method(SSL_METHOD *method);

  static const MethodFuncPtr TLSv1;

 private:
  SSL_METHOD *m_method;
};

1 个答案:

答案 0 :(得分:0)

我为const SSL_METHOD *返回类型添加了一个typedef。编译器很高兴。

C ++标题:

Method::Method(SSL_METHOD* method)
  : m_method(method)
{ }

ConstMethodFuncPtr Method::TLSv1 = TLSv1_method;

C ++来源:

WORD testStart,testEnd;

testStart = 0x000;
testEnd = 0xFFF;

while(testStart != testEnd) testStart++;