交叉引用、前向声明等:按什么顺序
Cross referencing, forward declarations, etc: In which order?
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;
相关文章:
- 计算 I+V[i++] 的顺序是什么?
- C++:使用方法调用析构函数的顺序是什么?
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 函数模板实例化、替换和重载解析的顺序是什么?
- 变量按什么顺序相乘
- libavdevice 和 x11 的静态链接库应该以什么顺序链接?
- 顺序一致性和获取/发布语义有什么区别?
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 构造函数中没有参数的对象类成员按什么顺序初始化?
- 在 OpenGL 中计算矩阵时,转换的正确顺序是什么?
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- 在 C++ 中,以相反顺序排序的最快方法是什么?
- 操纵器,C 我应该使用什么顺序
- 这种情况以什么顺序发生
- 在 c++ 中应按什么顺序释放内存?
- 具有类层次结构时按什么顺序调用方法
- 我应该按什么顺序发送callback()并通知服务员?
- 如果在一行中声明两个对象,则按什么顺序构造它们
- 交叉引用、前向声明等:按什么顺序
- 我以什么顺序包含头文件?