我的TaskScheduler COM工作,这是我的代码:C++ Visual Studio 2015“非标准语法;使用“&”来创建一个指针成员”
typedef HRESULT(*FuncOfBoll)(_Out_ VARIANT_BOOL* b);
static bool GetBool(FuncOfBoll func)
{
VARIANT_BOOL b = VARIANT_FALSE;
HRESULT hr = func(&b);
if (FAILED(hr)) return FALSE;
return b == VARIANT_TRUE;
}
void test(ITaskSettings* settings)
{
bool b = GetBool(settings->get_StopIfGoingOnBatteries); // <= The error here
// ...
}
,我得到以下错误:
Error C3867 'ITaskSettings::get_StopIfGoingOnBatteries': non-standard syntax; use '&' to create a pointer to member
什么是我的错误,如何纠正它?
@PeteBecker该函数的参数('GetBool')是一个采用bool的函数,它不能与成员函数一起使用。 – Borgleader
你不能那样做。非静态类成员函数不是函数,例如它们不能被称为*,就像可以调用的函数一样。 –
投票结束为**不清楚你问**的内容。请参阅[我的评论 - 答案](http://stackoverflow.com/a/39622968/464581)一些希望对此有帮助的评论。 –