相关疑难解决方法(0)

c ++问题与继承类中的函数重载

这可能是一个noob问题,抱歉.我最近遇到了一个奇怪的问题,试图在c ++,函数重载和继承中搞乱一些高级的东西.

我将展示一个简单的例子,只是为了证明这个问题;

有两个班,classAclassB如下;

class classA{
    public:
        void func(char[]){};    
};

class classB:public classA{ 
    public:
        void func(int){};
};
Run Code Online (Sandbox Code Playgroud)

据我所知classB,现在应该拥有两个func(..)函数,由于参数不同而重载.

但是在主方法中尝试这个时;

int main(){
    int a;
    char b[20];
    classB objB;
    objB.func(a);    //this one is fine
    objB.func(b);    //here's the problem!
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它给出了错误,因为void func(char[]){}; 超类中的方法classA在派生类中是不可见的classB.

我怎么能克服这个?这不是在c ++中如何重载?我是c ++的新手,但在Java中,我知道我可以使用这样的东西.

虽然我已经找到了这个询问类似问题的帖子,但我认为这两个案例是不同的.

c++ inheritance overloading class

42
推荐指数
2
解决办法
2万
查看次数

继承和方法重载

为什么C++编译器会出现此错误?为什么我可以从B访问lol(),但无法访问rofl()[不带参数].捕获量在哪里?

class A
{
public:
   void lol(void) {}
   void rofl(void) { return rofl(0);}
   virtual void rofl(int x) {}
};

class B : public A
{
public:
   virtual void rofl(int x) {}
};

int _tmain(int argc, _TCHAR* argv[])
{
    A a;
   a.lol();
   a.rofl(1);
   a.rofl();

   B  b;
   b.lol();
   b.rofl(1);    
   b.rofl(); //ERROR -> B::rofl function does not take 0 arguments


   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance overriding overloading

18
推荐指数
1
解决办法
9624
查看次数

标签 统计

c++ ×2

inheritance ×2

overloading ×2

class ×1

overriding ×1