Xcode erreur de compilation c++ Attendus nom de membre ou ';' après la déclaration de prescripteurs

Je vais avoir des problèmes avec la vérification de méthodes dans une bibliothèque c++ (openNN) je suis en train de compiler dans Xcode. Je vais utiliser un exemple de l'une des méthodes que j'imagine qu'elles sont toutes causées par le même problème.

En-tête de déclaration où j'obtiens l'erreur:

Attendus nom de membre ou ';' après la déclaration de prescripteurs.

void check(void) const;

Définition de la fonction:

void InverseSumSquaredError::check(void) const
{
std::ostringstream buffer;
//Neural network stuff
if(!neural_network_pointer)
{
buffer << "OpenNN Exception: InverseSumSquaredError class.\n"
<< "void check(void) const method.\n"
<< "Pointer to neural network is NULL.\n";
throw std::logic_error(buffer.str().c_str());      
}
const MultilayerPerceptron* multilayer_perceptron_pointer = neural_network_pointer->get_multilayer_perceptron_pointer();
if(!multilayer_perceptron_pointer)
{
buffer << "OpenNN Exception: InverseSumSquaredError class.\n"
<< "void check(void) const method.\n"
<< "Pointer to multilayer perceptron is NULL.\n";
throw std::logic_error(buffer.str().c_str());      
}
const unsigned int inputs_number = multilayer_perceptron_pointer->count_inputs_number();
const unsigned int outputs_number = multilayer_perceptron_pointer->count_outputs_number();
if(inputs_number == 0)
{
buffer << "OpenNN Exception: InverseSumSquaredError class.\n"
<< "void check(void) const method.\n"
<< "Number of inputs in multilayer perceptron object is zero.\n";
throw std::logic_error(buffer.str().c_str());      
}
if(outputs_number == 0)
{
buffer << "OpenNN Exception: InverseSumSquaredError class.\n"
<< "void check(void) const method.\n"
<< "Number of outputs in multilayer perceptron object is zero.\n";
throw std::logic_error(buffer.str().c_str());      
}
//Mathematical model stuff
if(!mathematical_model_pointer)
{
buffer << "OpenNN Exception: InverseSumSquaredError class.\n"
<< "void check(void) const method.\n"
<< "Pointer to mathematical model is NULL.\n";
throw std::logic_error(buffer.str().c_str());     
}
//Data set stuff 
if(!data_set_pointer)
{
buffer << "OpenNN Exception: InverseSumSquaredError class.\n"
<< "void check(void) const method.\n"
<< "Pointer to data set is NULL.\n";
throw std::logic_error(buffer.str().c_str());      
}
//Final solutions error stuff
}

Si je change la définition de l'en-tête

void InverseSumSquaredError::check(void) const;

Je me retrouve avec l'erreur:

Supplémentaire de qualification sur le membre 'vérifier'

Je suis actuellement en utilisant le langage C++98 et de la Bibliothèque libc++.
Xcode est définie à la compilation de sources d'Objective-C++ qui prend soin de la plupart des autres erreurs.

Je ne peux pas penser à autre chose pertinente à cette question, il m'avait bloqué pendant des heures, de sorte que toute aide est très appréciée.

  • ce n'est pas de "c", donc merci de supprimer le 'c' de la balise
  • est-ce que ça va être utilisé comme pur C++? ou voulez-vous utiliser en mode mixte pour OSX/iOS/Cacao fins?
  • Ça va être mélangé avec de l'Objective-c sur OS X, éventuellement iOS
  • Il aide si vous modifiez le nom de la fonction? Peut-être check est #défini quelque part. Aussi, pouvez-vous montrer quelques lignes avant la ligne d'en-tête de déclaration, vous pourriez être en manque un point-virgule
  • check ne semble pas être défini par ailleurs. Bien qu'après l'avoir modifié, il compile bien. Je suppose que Xcode n'aime pas le nom de la méthode.
  • ne semble pas être un problème pour certains -- voir stackoverflow.com/questions/16766843/... et github.com/USCiLab/cereal/issues/104, vous pouvez essayer d'utiliser le #define approche décrite dans le deuxième lien. HTH.

InformationsquelleAutor user1899201 | 2015-07-27