bibliotheek maken

Hallo,

Ik probeer voor mijzelf een library te maken met daarin een config scherm voor de esp8266.
een groot deel lukt, alleen ik loop tegen een punt aan waar ik me even geen raad mee weet.

in mijn main programma gebruik ik iets als :

ESP8266WebServer server(80);

hoe kan ik deze zo declareren dat ik deze ook kan gebruiken in de library.
is er iemand die mij hier mee kan helpen.

Bedoel je zoiets?

[color=#5e6d03]#include[/color] [color=#434f54]<[/color][b][color=#d35400]ESP8266WebServer[/color][/b][color=#434f54].[/color][color=#000000]h[/color][color=#434f54]>[/color]

[color=#00979c]class[/color] [color=#000000]ConfigScherm[/color] [color=#000000]{[/color]
  [color=#00979c]public[/color][color=#434f54]:[/color]
    [color=#000000]ConfigScherm[/color][color=#000000]([/color][b][color=#d35400]ESP8266WebServer[/color][/b] [color=#434f54]&[/color][color=#000000]server[/color][color=#000000])[/color] [color=#434f54]// Constructor[/color]
      [color=#434f54]:[/color] [color=#000000]server[/color][color=#000000]([/color][color=#000000]server[/color][color=#000000])[/color] [color=#434f54]// Initialize ESP8266WebServer reference[/color]
    [color=#000000]{[/color]
      [color=#000000]server[/color][color=#434f54].[/color][color=#d35400]on[/color][color=#000000]([/color][color=#005c5f]"/config"[/color][color=#434f54],[/color] [color=#000000]std[/color][color=#434f54]:[/color][color=#434f54]:[/color][color=#000000]bind[/color][color=#000000]([/color][color=#434f54]&[/color][color=#000000]ConfigScherm[/color][color=#434f54]:[/color][color=#434f54]:[/color][color=#000000]serveConfig[/color][color=#434f54],[/color] [color=#5e6d03]this[/color][color=#000000])[/color][color=#000000])[/color][color=#000000];[/color]
    [color=#000000]}[/color]
  [color=#00979c]private[/color][color=#434f54]:[/color]
    [b][color=#d35400]ESP8266WebServer[/color][/b] [color=#434f54]&[/color][color=#000000]server[/color][color=#000000];[/color] [color=#434f54]// Reference to a ESP8266WebServer object[/color]

    [color=#00979c]void[/color] [color=#000000]serveConfig[/color][color=#000000]([/color][color=#000000])[/color] [color=#000000]{[/color]
      [color=#000000]server[/color][color=#434f54].[/color][color=#d35400]send[/color][color=#000000]([/color][color=#000000]200[/color][color=#434f54],[/color] [color=#005c5f]"text/plain"[/color][color=#434f54],[/color] [color=#005c5f]"This is the config page."[/color][color=#000000])[/color][color=#000000];[/color]
    [color=#000000]}[/color]
[color=#000000]}[/color][color=#000000];[/color]

[b][color=#d35400]ESP8266WebServer[/color][/b] [color=#000000]server[/color][color=#000000]([/color][color=#000000]80[/color][color=#000000])[/color][color=#000000];[/color]

[color=#000000]ConfigScherm[/color] [color=#000000]cfg[/color][color=#000000]([/color][color=#000000]server[/color][color=#000000])[/color][color=#000000];[/color]

[color=#00979c]void[/color] [color=#5e6d03]setup[/color][color=#000000]([/color][color=#000000])[/color] [color=#000000]{[/color][color=#000000]}[/color]

[color=#00979c]void[/color] [color=#5e6d03]loop[/color][color=#000000]([/color][color=#000000])[/color] [color=#000000]{[/color]
  [color=#000000]server[/color][color=#434f54].[/color][color=#d35400]handleClient[/color][color=#000000]([/color][color=#000000])[/color][color=#000000];[/color]
[color=#000000]}[/color]

(Niet getest)

Je moet waarschijnlijk opletten dat je ConfigScherm instance niet out of scope gaat voor je ESP8266WebServer instance out of scope gaat als je een niet-statische methode van ConfigScherm gebruikt als callback voor een server handler. De server heeft geen manier om request handlers uit de interne linked list te verwijderen. De std::function<void(void)> callback (aangemaakt door std::bind in ConfigScherm::ConfigScherm) bestaat dan nog wel, maar het object waarvan de methode moet opgeroepen worden niet meer.

Pieter

Zet in de header an je library

extern ESP8266WebServer server;

@pieterP,

Kun je mij misschien iets meer uitleggen wat er allemaal gebeurt.
Het is mijn eerste keer dat ik aan een library begin.

De basis dingetjes weet ik een klein beetje, maar jij gaat wel heel snel!
Helemaal met de opmerking die jij er onder hebt gezet, daar snap ik niet goed wat je precies bedoeld.