我有以下代码:
class SSLHashSHA1
{
SSLHashSHA1();
~SSLHashSHA1();
public:
static OSStatus update(string*, int*);
static OSStatus final (string*, string*);
};
OSStatus SSLHashSHA1::update(string* ctx, int* ran){
return 0;
}
OSStatus SSLHashSHA1::final(string* ctx, string* out){
return 0;
}
static OSStatus SSLVerifySignedServerKeyExchange(
SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signature, uint16_t signatureLen)
{
OSStatus err;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err;
}
而且我得到标题中提到的错误。
我为SSLHashSHA1.update和SSLHashSHA1.final调用获得了该功能。
我为什么得到那个?
我认为当我使类成员函数静态化时,可以使用而不需要创建对象。还是应该将类更改为struct之类的东西?
最佳答案
SSLHashSHA1.update()
这是完全错误的,因为
SSLHashSHA1
是类,而不是实例,所以您不能在此处使用.
运算符来调用方法,相反,正如您所提到的,update
是静态函数,因此使用范围解析运算符(::
)调用它,如下所示:SSLHashSHA1::update(&hashCtx, &serverRandom))