User Tools

Site Tools


cpp:syntax:class:generic

This is an old revision of the document!


Les classes génériques en C++

Pourquoi des classes génériques en C++

Supposons que nous souhaitons définir une classe qui founit un buffer d'une taille prédéfinie :

class buffer
{
private:  
  uint8_t m_buffer[128];
 
public:  
 
  buffer(const buffer& anotherBuffer)
  {
    std::copy(anotherBuffer.m_buffer, anotherBuffer.m_buffer + 128, m_buffer);
  }
  int size() const { return 128; }
  buffer& operator = (const buffer& anotherBuffer)
  {
    std::copy(anotherBuffer.m_buffer, anotherBuffer.m_buffer + 128, m_buffer);
    return this; 
  }
 
  operator uint8_t*() const { return m_buffer; }
  uint8_t operator[](int anIndex) const 
  { 
      if(anIndex >= 128)
          throw std::out_of_range("index larger than buffer");
      return m_buffer[anIndex];
  }
  uint8_t& operator[](int anIndex)
  { 
      if(anIndex >= 128)
          throw std::out_of_range("index larger than buffer");
      return m_buffer[anIndex];
  }
};

Cette classe définit un buffer d'une taille de 128 octets.

cpp/syntax/class/generic.1617720477.txt.gz · Last modified: 2021/04/06 14:47 by bmonsuez