Error: a brace-enclosed initializer is not allowed here before
Fermé
aycha mabrouk
Messages postés
7
Date d'inscription
jeudi 10 octobre 2013
Statut
Membre
Dernière intervention
25 avril 2018
-
Modifié le 1 nov. 2017 à 23:19
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 6 nov. 2017 à 18:17
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 6 nov. 2017 à 18:17
A voir également:
- Brace enclosed
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Error 0x80070643 - Accueil - Windows
- Cpu over temperature error - Forum Matériel & Système
- Error 10 pioneer ✓ - Forum Autoradio
- Fan error lenovo - Forum Refroidissement
2 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
Modifié le 6 nov. 2017 à 09:50
Modifié le 6 nov. 2017 à 09:50
Bonjour,
Plusieurs choses ne vont pas :
- Comme le message d'erreur l'indique, tu n'es pas sensée initialiser les membres de ta structure ainsi. En C++ il faut par exemple passer par un constructeur, que l'on parle d'une structure ou d'une classe.
- Il n'est pas très logique de stocker tout dans des tableaux à double entrée, en particulier quand il s'agit de vecteurs ou de valeurs numériques.
- Il y a aussi de grosses confusions en matières de typage. Par exemple
- En terme de typage, il n'y a aucune raison de stocker dans un
-
Voici un exemple de constructeur :
Pour récupérer une paire dans deux variables, on peut utiliser std::tie
Voici comment tu pourrais gérer tes vecteurs (et matrices) avec un compilateur récent :
Bonne chance
Plusieurs choses ne vont pas :
- Comme le message d'erreur l'indique, tu n'es pas sensée initialiser les membres de ta structure ainsi. En C++ il faut par exemple passer par un constructeur, que l'on parle d'une structure ou d'une classe.
- Il n'est pas très logique de stocker tout dans des tableaux à double entrée, en particulier quand il s'agit de vecteurs ou de valeurs numériques.
- Il y a aussi de grosses confusions en matières de typage. Par exemple
double * tab[m][n]signifie que tu stockes une matrice de taille
mx
nde
double *(donc une matrice d'adresses mémoires).
- En terme de typage, il n'y a aucune raison de stocker dans un
doubleun nombre de classe.
unsigned intou
size_tseraient plus adéquat.
-
[predict_label1,precision1,prob_estimates_t1]=SVMPredict(LabelS1,SStest1, model);n'est pas possible en C (une fonction n'a qu'une valeur de retour). Si tu veux retourner une paire et l'affecter dans deux variables, c'est possible mais ce n'est pas comme ça qu'on fait.
Voici un exemple de constructeur :
struct MaStructure { int membre1; int membre2; int membre3; MaStructure(int x1, int x2): membre1(x1), membre1(x2) { membre3 = 8; } }; int main() { MaStructure s(3, 7); return 0; }
Pour récupérer une paire dans deux variables, on peut utiliser std::tie
#include <iostream> #include <tuple> int main() { int x, y; std::pair<int, int> p = std::make_pair(3, 7); std::tie(x, y) = p; std::cout << "x = " << x << std::endl << "y = " << y << std::endl; return 0; }
Voici comment tu pourrais gérer tes vecteurs (et matrices) avec un compilateur récent :
#include <iostream> #include <ostream> #include <vector> template <typename T> std::ostream & operator << ( std::ostream & os, const std::vector<T> & v ) { os << '['; for (auto x : v) os << ' ' << x; os << " ]"; return os; } int main() { std::vector<int> v = {1, 2, 3}; std::cout << "v = " << v << std::endl; std::vector<std::vector<int>> m = {{1, 2}, {3, 4}}; std::cout << "m = " << m << std::endl; return 0; }
Bonne chance
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
6 nov. 2017 à 18:17
6 nov. 2017 à 18:17
Bonjour,
Le compilateur n'aime pas du tout ce qu'il lit, et pour cause.
Quand tu écris
Ensuite, le compilateur est en train de s'étrangler et indique ce qu'il peut.
Le compilateur n'aime pas du tout ce qu'il lit, et pour cause.
Quand tu écris
res = SVMPredict(LabelS1,SStest1, model);, le
resà gauche du égal est un type local. La valeur de retour d'une fonction ne peut être affectée qu'à une instance, certainement pas un type qui plus est local.
Ensuite, le compilateur est en train de s'étrangler et indique ce qu'il peut.
Modifié le 7 nov. 2017 à 09:29
j'ai modifié mon code de cette façon ,maintenant j'essaye de corriger les erreurs et je suis pas sure qu'il fonctionne ou non parce que c'est ma première fois que j'écris un code c ++ en vivado HLS,s'il vous plaît Monsieur pouvez-vous me dit qu'elle est la faute avec une suggestion de correction .merci