Sketch C: Funktionen überladen? wie?

Wegen dem template. Ich habe gerade mal versucht damit rumzuspielen und gemerkt, dass ich es doch mal in der Arduino IDE statt nur in Visual C++ hätte testen sollen. :frowning:

Wenn du das in eine .h Datei schreibst und diese inkludierst funktioniert das. Aber wenn du es so in den Arduino Sketch schreibst, legt dich leider die Arduino IDE rein. Die will das nämlich in die .cpp Datei schreiben und das geht nicht. Templates gehören in einen Header. Grrrrrr!! :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

Habe mal eine Header Datei angehängt. Wenn du Sketch -> Add File damit machst, dann geht das so:

#include "Bubblesort.h"

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{	
  long test1[] = { 1000, 100, 1, 5   };
  byte test2[] = { 3, 255, 6, 81, 45, 72   };
  double test3[] = { 2.5, 1.96, 1.23, 45.45, 17.8   };

  const int size1 = sizeof(test1) / sizeof(long);
  const int size2 = sizeof(test2) / sizeof(byte);
  const int size3 = sizeof(test3) / sizeof(double);

  bubblesort(test1, size1);
  bubblesort(test2, size2);
  bubblesort(test3, size3);

  for(int i = 0; i < size1; i++)
  {
    Serial.print(test1[i]);
    Serial.print(" ");
  }
  Serial.println();
  for(int i = 0; i < size2; i++)
  {
    Serial.print(test2[i]);
    Serial.print(" ");
  }
  Serial.println();
  for(int i = 0; i < size3; i++)
  {
    Serial.print(test3[i]);
    Serial.print(" ");
  }
  Serial.println();
  Serial.println();
  
  delay(10000);
}

Was man schön sieht ist das templates Code Generatoren sind. Mit jeder zusätzlichen Verwendung von bubblesort() mit anderen Datentyp steigt die Sketch-Größe

Bubblesort.h (363 Bytes)