Alors déjà bonjour, s'il vous plait, merci tout ça tout ça ...
Il n'y a pas pire façon de poser une question que de balancer un code sans contexte et de juste dire "ça marche pas"
Les gens ont besoin de savoir si ton code compile, si il crash ou si il produit un résultat différent de celui que tu attends, quel est le message d'erreur si jamais ça compile pas
Si ça compile, un peu de contexte stp => Un lien vers le tuto Vulkan que tu es en train de suivre ? Une explication de ce que tu essayes de faire globalement ? Une explication de ce que tu essayes de faire avec cette fonction précise ? Quel est le résultat attendu ? Quel est le résultat qui tu obtiens à la place ?
Ca fait beaucoup de question et les intervenants peuvent pas deviner les réponses
J'avais pourtant envoyé l'erreur que j'avais :/ L'image n'a pas été prise on dirait. (d'où l'image avec la silhouette blanche en bas de mon message)
Donc le problème est le suivant : je dois utiliser <optional>. Jusqu'ici je comprends et donc j'applique. Mais lorsque je l'écris (std::optional<uint32_t> graphicsFamily;) la liste d'erreurs m'affiche :
"Cette déclaration n'a pas de classe de stockage ou de spécificateur de type"
Pourtant j'ai écrit la même chose que sur le tuto Vulkan (sur le site officiel !). Lien ici
Quand on n'arrive pas à faire marcher un truc qu'on ne connait pas dans un projet en cours, il faut rétropedaler, et essayer de le faire marcher tout seul. Ca évite de combiner les problèmes.
$ g++ opt.cc
opt.cc: In function ‘int main()’:
opt.cc:5:10: error: ‘optional’ is not a member of ‘std’
5 | std::optional<std::string> opt{"foo"};
| ^~~~~~~~
opt.cc:5:10: note: ‘std::optional’ is only available from C++17 onwards
opt.cc:5:30: error: expected primary-expression before ‘>’ token
5 | std::optional<std::string> opt{"foo"};
| ^
opt.cc:5:32: error: ‘opt’ was not declared in this scope
5 | std::optional<std::string> opt{"foo"};
|
Constatation : ça compile pas. optional not a member of std.
Mais bon, il y a une indication
only available from C++17 onwards
C'est à dire, disponible seulement à partir de C++17. Donc, compilons avec la bonne option
Je suis en C++17, j'ai vérifié dans les réglages car je pensais aussi que c'était un problème de version. Et j'étais en effet en C++14 (sauf que je l'avais changé avant qu'on m'en donne l'idée via ce forum) mais toujours la même erreur. Je suis sur Visual Studio 2019 d'ailleurs.
Voici la liste des erreurs :
Erreur 'graphicsFamily' n'est pas membre de 'MyEngine::QueueFamilyIndices' // Normal
Erreur 'graphicsFamily' n'est pas membre de 'MyEngine::QueueFamilyIndices' // Normal
Erreur 'graphicsFamily' : identificateur non déclaré // Normal
Erreur 'optional' n'est pas membre de 'std' // Mon problème
Erreur Spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut // Explication ?
Erreur (active) Cette déclaration n'a pas de classe de stockage ou de spécificateur de type // Mon problème
Erreur (active) Identificateur "graphicsFamily" non défini // Normal
Erreur (active) Namespace "std" n'a pas de membre "optional" // Mon problème
Voici les paramètres généraux (si ça fonctionne cette fois-ci) :
Le <optional> y est ! Je l'ai dit dans mon deuxième message, et je dis "Normal" car c'est à cause d'une réaction en chaine donc si un truc déconne, le reste va déconner aussi, donc la source du problème est le std::optional qui, de mon côté, ne fonctionne pas. Et je ne trouve malheureusement pas la source de ce problème. Une fois ce dernier trouvé, les attributs non définis et non déclarés seront enfin définis et déclaré. Voilà pourquoi le " // Normal " !
Donc...
1 - J'ai mis l'entête " #include <optional> " dans le .hpp
2- Dans mes paramètres je suis en C++17 (voir image plus haut)
3 - J'ai écrit la même chose que le tuto que je suis sur le site officiel de Vulkan (à part que j'ai fait un .hpp et un .cpp)
Info en + : Je suis sur VS2019
Ainsi, quel pourrait être ce fameux problème s'il-vous-plait sachant que la source du problème est le " std::optional " ?
Cordialement
PS : Si quelqu'un pouvait m'expliquer l'erreur sur le int par défaut du C++ (où j'ai mis " // Explication ? "), vous seriez bien aimable !!
As tu essayé sur le petit exemple que j'ai fourni ?
Ça permettrait de déterminer si ta configuration permet d'utiliser les optionals ou pas, au lieu de yoyoter d'un problème à l'autre.
Ps y a pas d'include du hpp.
Ca peut durer, tant qu'on ne voit que des fragments. En fait c'est une situation fréquente ici, quelqu'un vient avec un probleme et ne fournit pas tous les éléments, préférant accuser le langage, l'ordinateur, le compilateur, le système etc plutôt que de montrer son code, parce que t'inquiète frère pas besoin y marche j'te jure. Si il marchait si bien, y aurait pas de problème. La psychologie de la programmation, toute une histoire.
Pour info, je n'ai en aucun cas accusé le langage, l'ordinateur, le compilateur, le système, etc. Je sais qu'il y a une couille dans mon code. Ainsi, merci de rester calme et de me demander gentiment les choses. C'est un forum d'entraide, oui ou non ? Donc au lieu de t'emporter pour un rien, arrête-toi juste à " As-tu essayé sur le petit exemple que je t'ai fourni ? Cela permettrait de déterminer si ta configuration permet d'utiliser les optionals ou pas". Je l'aurais fait, comme il faut, et j'aurais dit, "oui, ça fonctionne bien ! Quel pourrait être mon problème selon toi ?"
J'ai rien changé et maintenant ça marche (ou ça marche plus) : on y croit tous.
Ps: je m'énerve pas, je fais le spectacle. En même temps j'explique un bug psychologique qu'on a tous, en fait. C++ qui ne marche pas, c'etait un autre fil dans ce forum.
Je rappelle que ton titre c'est "optional ne fonctionne pas". Et pas "j'arrive pas à faire marcher optional dans mon code dont je ne vous montre qu'un bout". Tu vois la nuance ?
Ps2 il a quand même fallu que je m'y reprenne à 3 fois pour demander gentiment
- de tester optional à part
- de tester avec un exemple complet que je t'ai fourni
Quand je dis que ça a finalement fonctionné sans rien faire, je veux dire que je n'ai rien touché dans mon code... Mais le fait que j'ouvre un autre projet pour essayer optional tout seul comme demandé puis que je revienne sur mon ancien projet (car j'ouvre un projet à la fois), il m'a mis le optional en couleur donc non, je n'ai rien touché dans mon code mais le fait d'ouvrir un autre projet, ça m'a débloqué d'une façon ou d'une autre mon premier projet (le fait de quitter et de relancer le projet à la bonne version du C++ qui sait car je n'avais pas fermé mon projet après avoir changer la version).
Quand on change des paramètres de la chaine de compilation, on fait, au minimum, une régénération complète du projet (headers pré-compilés, générations automatiques de code, constantes de compilation, etc...), et encore, quand on n'a correctement géré les dépendances entre projets.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si vous ne trouvez plus rien, cherchez autre chose.
Si vous ne trouvez plus rien, cherchez autre chose.
Si vous ne trouvez plus rien, cherchez autre chose.
Eug
Si vous ne trouvez plus rien, cherchez autre chose.