繁体   English   中英

public inherited class无法访问基类的重载非虚公共方法?

[英]public inherited class not able to access overloaded non-virtual public method of base class?

我的编译器说:

error C2660: 'UberMaterial::Initialize' : function does not take 2 arguments

当我这样写:

#include "BaseMaterial.h"
#include "UberMaterial.h"

UberMaterial* m_pGameLevelMaterial;
m_pGameLevelMaterial->Initialize(m_pContentManager, m_pLevel->GetDevice());

基类:

class BaseMaterial
{
public:
BaseMaterial(tstring shaderFilename);
virtual ~BaseMaterial(){}

void Initialize(ContentManager *pContentManager, ID3D10Device *pD3DDevice);
//[More Code...]

protected:
    virtual void Initialize(ContentManager *pContentManager) = 0;
//[More Code...]
};

继承的类:

#include "BaseMaterial.h"
class UberMaterial:public BaseMaterial
{
//[More Code...]
protected:
    virtual void Initialize(ContentManager *pContentManager);
//[More Code...]
};

谁能告诉我这是什么问题?

如果您需要更多代码,请发表评论并发布。 但是整个事情相当大,所以我此时并没有把它包括在内。

是的,默认情况下,派生类中的重载将隐藏与基类不同的重载。 你可以重新暴露基类的重载using

class UberMaterial : public BaseMaterial
{
    ...

public:
    using BaseMaterial::Initialize;

    virtual void Initialize(ContentManager *pContentManager);
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM