Topic de MrCuisine17 :

[PROG] QUESTION à un PRO en C++

Je suis fin connaisseur du C et je dois utiliser du C++ pour Arduino. https://image.noelshack.com/fichiers/2016/50/1481994659-mathematicienrisitas.png
Je découvre la POO en Cpp (je connaissais en Java), et en fait j'ai un problème sur la portée des classes :

J'ai des classes C1, C2, C3 ,etc qui héritent d'une classe P et qui redéfinissent uniquement le constructeur pour initialiser un matériel différent pour au final faire la même chose (différents drivers pour des écrans LCD de même définition dans mon cas)

Donc après instanciation, l'utilisateur (moi) ne va utiliser que les méthodes propre à P (puisque les méthodes propres à C1, C2, etc ne sont que des constructeurs).

J'ai besoin d'une fonction qui scanne pour détecter quel driver est connecté (ce que j'ai fait) . Cette fonction doit retourner un objet de type P initialiser par la classes héritée soit C1, C2, etc (ce que je veux faire).

Je crois avoir compris que ma méthode devra être de type P* ou P& (je ne sais pas utiliser les références constantes P& ), pour ça je ferai un return new class C1(args_constr); mais ça plante à l'utilisation. Je pense qu'il y a un problème avec la portée de new... https://image.noelshack.com/fichiers/2016/50/1481994659-mathematicienrisitas.png

Pourquoi tu dois faire du C++. Reste sur du C ?

Le 19 avril 2021 à 15:10:50 Verilog1 a écrit :
Pourquoi tu dois faire du C++. Reste sur du C ?

non la bibliothèque que j'utilise pour les drivers est en C++ (P, C1, C2) https://image.noelshack.com/fichiers/2016/50/1481994659-mathematicienrisitas.png
Et puis ça me permet d'apprendre le C++ https://image.noelshack.com/fichiers/2016/50/1481994659-mathematicienrisitas.png

Le 19 avril 2021 à 15:13:37 newfag942 a écrit :
Fais voir le code

Je pense pas que ça va être utilie mais pour l'instant j'essaie juste de faire le return :

U8G2 *i2c_scanner()
{
    return new class U8G2_128X64_CONSTRUCTOR(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);
}

la bibliothèque en question : https://github.com/olikraus/u8g2

Le 19 avril 2021 à 15:15:49 :

Le 19 avril 2021 à 15:13:37 newfag942 a écrit :
Fais voir le code

Je pense pas que ça va être utilie mais pour l'instant j'essaie juste de faire le return :


U8G2 *i2c_scanner()
{
  return new class U8G2_128X64_CONSTRUCTOR(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);
}

la bibliothèque en question : https://github.com/olikraus/u8g2

pourquoi new class

new tout seul devrait marcher

à mon c'est un problème de type parce que tu renvoie un pointeur sur la classe héritée alors qu'il attend un pointeur sur la classe parent

c'est un truc classique mais je me rappelle plus ce qu'il faut faire, peut être un simple cast ?

Gogo Rust c'est le futur.
Kernel de linux refondu en Rust, beaucoup point critiques de gros services refondu en Rust (billet à ce propos des ingé de discord très intéressant sur le sujet et qui explique en partie pour le Rust la emporté sur le Go de google.).
Windows recode aussi des composant critique et low lvl en rust, la suite du développement d'Android passe en Rust...

Et puis une dernière pour la route :
https://linux.developpez.com/actu/314335/Linus-Torvalds-souligne-une-bonne-avancee-du-langage-Rust-dans-le-developpement-du-noyau-Linux-et-aurait-qualifie-le-Cplusplus-de-langage-de-m-apres-le-message-de-Google/

Le 19 avril 2021 à 15:23:05 :
Gogo Rust c'est le futur.
Kernel de linux refondu en Rust, beaucoup point critiques de gros services refondu en Rust (billet à ce propos des ingé de discord très intéressant sur le sujet et qui explique en partie pour le Rust la emporté sur le Go de google.).
Windows recode aussi des composant critique et low lvl en rust, la suite du développement d'Android passe en Rust...

Et puis une dernière pour la route :
https://linux.developpez.com/actu/314335/Linus-Torvalds-souligne-une-bonne-avancee-du-langage-Rust-dans-le-developpement-du-noyau-Linux-et-aurait-qualifie-le-Cplusplus-de-langage-de-m-apres-le-message-de-Google/

ferme la putain

Le 19 avril 2021 à 15:23:53 newfag942 a écrit :

Le 19 avril 2021 à 15:23:05 :
Gogo Rust c'est le futur.
Kernel de linux refondu en Rust, beaucoup point critiques de gros services refondu en Rust (billet à ce propos des ingé de discord très intéressant sur le sujet et qui explique en partie pour le Rust la emporté sur le Go de google.).
Windows recode aussi des composant critique et low lvl en rust, la suite du développement d'Android passe en Rust...

Et puis une dernière pour la route :
https://linux.developpez.com/actu/314335/Linus-Torvalds-souligne-une-bonne-avancee-du-langage-Rust-dans-le-developpement-du-noyau-Linux-et-aurait-qualifie-le-Cplusplus-de-langage-de-m-apres-le-message-de-Google/

ferme la putain

this j'en ai rien à foutre j'utilise du C et du Cpp là, le jour ou les 3/4 des ressources pour l'embarqué seront en rust on verra en nonobst 2 nonobst

en fait je crois qu'il suffit de faire

U8G2 * blabla = new U8G2_128X64_CONSTRUCTOR(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);
return blabla;
En fait ça compile mais l'ESP32 me fait une backtrace https://image.noelshack.com/fichiers/2021/03/7/1611492741-ahi-gros.png

"J'ai des classes C1, C2, C3 ,etc qui héritent d'une classe P et qui redéfinissent uniquement le constructeur pour initialiser un matériel différent pour au final faire la même chose"

C'est quoi l'utilité de faire ça plutôt que de faire 3 constructeurs différents ?

Le 19 avril 2021 à 15:27:47 mrcmacronENT a écrit :
en fait je crois qu'il suffit de faire

U8G2 * blabla = new U8G2_128X64_CONSTRUCTOR(U8G2_R0, U8X8_PIN_NONE, SCL, SDA);
return blabla;

autant faire un cast non ?

Le 19 avril 2021 à 15:28:28 metissageQLF4 a écrit :
"J'ai des classes C1, C2, C3 ,etc qui héritent d'une classe P et qui redéfinissent uniquement le constructeur pour initialiser un matériel différent pour au final faire la même chose"

C'est quoi l'utilité de faire ça plutôt que de faire 3 constructeurs différents ?

Tu peux pas surcharger, les arguments sont de la même forme

Le 19 avril 2021 à 15:27:12 :

Le 19 avril 2021 à 15:23:53 newfag942 a écrit :

Le 19 avril 2021 à 15:23:05 :
Gogo Rust c'est le futur.
Kernel de linux refondu en Rust, beaucoup point critiques de gros services refondu en Rust (billet à ce propos des ingé de discord très intéressant sur le sujet et qui explique en partie pour le Rust la emporté sur le Go de google.).
Windows recode aussi des composant critique et low lvl en rust, la suite du développement d'Android passe en Rust...

Et puis une dernière pour la route :
https://linux.developpez.com/actu/314335/Linus-Torvalds-souligne-une-bonne-avancee-du-langage-Rust-dans-le-developpement-du-noyau-Linux-et-aurait-qualifie-le-Cplusplus-de-langage-de-m-apres-le-message-de-Google/

ferme la putain

this j'en ai rien à foutre j'utilise du C et du Cpp là, le jour ou les 3/4 des ressources pour l'embarqué seront en rust on verra en nonobst 2 nonobst

En fait, Arduino ou pleins d'autres permettent déjà d'utiliser le Rust.

Au pire si t'es curieux, tu peux utiliser l'équivalent des shebang C pour que ton code Rust imite le comportement d'une librairie C/C++ tout en étant aussi opti que du C.

https://doc.rust-lang.org/nomicon/other-reprs.html

j'adore le C et Java

par contre C++ je lui chie dessus

Le 19 avril 2021 à 15:46:45 :
j'adore le C et Java

par contre C++ je lui chie dessus

C'est comme dire : j'aime la haute gastronomie et le Mcdo, mais je déteste burger king ! :rire:

Données du topic

Auteur
MrCuisine17
Date de création
19 avril 2021 à 15:05:48
Nb. messages archivés
43
Nb. messages JVC
39
En ligne sur JvArchive 230