Защишенная секция и указатели на члены класса
От: PoM-PoM 40mm Россия  
Дата: 28.06.04 09:46
Оценка:
в общем используя шестой билдер откомпилилровал следующее


class ScadaInterOperation
{
  protected:
   virtual void SetSchema(ScadaSchema *schema);
   public:
   ScadaInterOperation();
   virtual ~ScadaInterOperation();
   ... // не важно что
 };

class ComplexOperation:public ScadaInterOperation
{
  vector<ScadaInterOperation *> operations;
   
   virtual void SetSchema(ScadaSchema *schema);
  public:
   ComplexOperation(){};
   ~ComplexOperation();
   void Add(ScadaInterOperation *);
};

// внимание, фокус!
void ComplexOperation::SetSchema(ScadaSchema *schema)
{
  ScadaInterOperation::SetSchema(schema);  
  for_each(operations.begin(),operations.end(), Mem_Fun1(& ScadaInterOperation::SetSchema,schema));// ну не использую я буст
}


Таким образом, мне дали указатель на метод класса, который вообще то protected! заметим что

  (*operations.begin())->SetSchema(schema)

очевидно работать не будет! получается что защиту так легко обойти или билдер косячит?
Will give me piece of mind
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.