2016-07-29 34 views
0

Ich benutze dlib mit dem neuronalen Netzwerk Beispiel. dlib neural networkdlib mlp :: kernel_1a_c Mitglied Initialisierung in einer Klasse

ich den Fehler:

Fehler: keine passende Funktion für Aufruf von ‚DLIB :: mlp_kernel_c :: mlp_kernel_c()

Ich versuche, die

" zu initialisieren mlp :: kernel_1a_c net (2,5); "

Variable innerhalb einer Klasse, aber ich bekomme alle Arten von Fehlern. Hier ist das Stück Code relevant für mein Problem:

#ifndef MYCLASS_H 
#define MYCLASS_H 
#include <dlib/mlp.h> 
typedef dlib::mlp::kernel_1a_c mlp_trainer_type; 
Class MyClass: 
public: 
    MyClassConstructure() 
    { 
    /// After declaration, how do I initialize my_neural_network_ here? 
    // my_neural_network_(5, 5); ???? 
    } 
private: 
    /* this part fails, even without using the typedef. */ 
    mlp_trainer_type mouth_neural_network_; 
#end 

nicht einmal arbeiten, wenn ich tun:

private: 
    mlp_trainer_type mouth_neural_network_(2,5); 

Oder wenn ich erklären und definieren es als eine öffentliche Variable. Wie löse ich dieses Problem? Ich möchte keine globale Variable.

Ich benutze auch die SVM-Bibliothek von dlib, und das funktioniert in meiner Klasse. Es ist nur MLP, die nicht funktioniert.

Das Programm funktionierte nur mit dlib SVM, bis ich diese neuronale private Variable heute aufgenommen.

+0

Scheint eher eine C++ - Syntax als ein Verknüpfungsproblem zu sein. Ich kann einfach nicht den richtigen Weg finden, um es zu initialisieren. – Pototo

Antwort

1

Die Klasse, die Sie verwenden möchten mlp_kernel_c hat keinen Standardkonstruktor. Sie müssen die Membervariable initialisieren, bevor Sie den Konstruktortextkörper eingeben:

+0

S ***. Das war eine schwierige Frage. Ich bin so daran gewöhnt, Klassen mit mindestens einer Struktur zu machen, also hatte ich diesen Fehler nie zuvor gesehen. – Pototo

+0

aber, warte ... es hat eine Standardstruktur. Der Grund dafür ist, dass Sie nur ein nicht statisches Datenelement in der Initialisierungsliste initialisieren können. Dies ist die Syntax, die Sie oben vorgeschlagen haben – Pototo