[LC++]virtual protected?
    Mark Phillips 
    mark at austrics.com.au
       
    Fri Dec 21 15:42:28 UTC 2001
    
    
  
Hi Roberto,
> I mean I woul like to have a method which could be overided in the derived
> classes but not exposed in the objects..
What you want is the "protected:" interface.
> If I do:
> 
> class base
> {
>         protected:
>         virtual void doSomething ();
> };
> 
> The compiler complains..
What does it complain about?
The following code works fine for me (using g++).  I think it
is what you are trying to do.
#include <iostream>
using namespace std;
class baseTy {
private:
  int dataVt;
protected:
  virtual int f() const {
    return dataVt;
  }
public:
  baseTy(int dataAg=0): dataVt(dataAg) {}
  virtual ~baseTy() {}
};
class subTy: public baseTy {
protected:
  virtual int f() const {
    return 2*baseTy::f();
  }
public:
  int g() const {
    return f()*f();
  }
  subTy(int dataAg): baseTy(dataAg) {}
};
int main(int argc, char* argv[]) {
  subTy sub(3);
  cout<<"if data is 3, sub.g() is "<<sub.g()<<endl;
}
Cheers,
Mark.
    
    
More information about the tuxCPProgramming
mailing list