2012-10-12 7 views
0

我有一个名为Entity的类的子类,我不希望该子类重写Entity的构造函数,但也调用Entity的构造函数。所以我声明构造是这样的:如何用参数重写构造函数并在单独的文件中实现它

EntitySphere(GLuint shader):Entity(shader){ 
    //Code 
} 

但如果我实现的功能有,这种方法只适用于类定义(或者我得到了很多的错误)。我该如何实现相同的功能,但是能够在.cpp文件中实现构造函数?

+2

您可以在.cpp文件中实现构造函数(但将类名称放在构造函数名称:'EntitySphere :: EntitySphere'),同时在头文件中声明它:'EntitySphere(GLuint sphere);' – leemes

+1

我希望在'EntitySphere'的头文件中添加那个,你不需要包含'实体'标题。只需将其声明为“实体:实体(GLuint着色器)”。如果'Entity'头部发生变化,将会节省大量时间,但这些变化不会影响'EntitySphere'。 –

回答

3

要实现的类定义外部构造函数(或任何方法,为此事),你需要的方法名称前指定类的名称:

EntitySphere::EntitySphere(GLuint shader): Entity(shader) { 
    // ... 
} 

注意休息前EntitySphere::部分的方法。

否则,编译器不知道您提供定义的方法。 (也许它可以被猜到,但是如果它猜到错误并且在你的程序中将其与某些其他函数关联起来怎么办?)

+0

谢谢!问题是,这样做我得到了很多错误。但是从声明中删除:实体(着色器)修复了它,现在它工作。 – XaitormanX

相关问题