让:
class A
{
typedef A (* func_t)( A a );
func_t * _func;
};
我必须以什么顺序写这个,以及我需要什么前瞻声明(如果有的话),以便编译?
如果需要,这是我的真实代码:
class Value
{
public:
typedef Value (* func_t)( const std::vector< Value > & args );
private:
union
{
/// ...
func_t * _f;
}
_data;
// ...
};
Value Value::operator () ( const std::vector< Value > & args ) const
{
if( this->isFunction() )
{
return this->_data._f( args ); // ERROR
}
else
{
throw exception( "Value::operator () - Not an E_FUNCTION." );
}
}
这给了我错误:
error C2064: term does not evaluate to a function taking 1 arguments
感谢您的帮助:)
编辑:我也尝试在类之前,之后和之内声明函数指针类型,但始终存在问题。
答案 0 :(得分:4)
订单看起来不错。看起来不错的是
func_t * _f;
您正在声明指向成员的指针,然后尝试将其用作指向成员的指针。使用指向成员的普通指针:
func_t _f;