交叉引用、前向声明等:按什么顺序

Cross referencing, forward declarations, etc: In which order?

本文关键字:什么 顺序 声明 引用      更新时间:2023-10-16

Let:

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 * _f;

声明了一个指向成员的指针,然后试图将其用作指向成员的指针。使用普通指针指向成员:

func_t _f;