【发布时间】:2014-08-01 12:07:58
【问题描述】:
让:
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
感谢您的帮助:)
编辑:我也尝试过在类前、后、类内声明函数指针类型,但总是有问题。
【问题讨论】:
-
您将
func_t声明为指向(非成员)函数的指针,然后将成员变量_func声明为指向func_t的指针。换句话说,_func是一个指向非成员函数指针的指针。我怀疑这就是你想要的。
标签: c++ function class forward-declaration