Ich habe eine Klasse A, die den Klammeroperator außer Kraft setzt. Der folgende Code funktioniert:Segmentierungsfehler C++, nach dem Klammeroperator
int main(){
..
A a;
cout << a({0.5});
..
}
Während der folgende Code nicht
A fun(){
..
A a;
return a;
..
}
int main(){
..
A a = fun();
cout << a({0.5});
}
funktioniert Wenn ich diesen zweiten Code auszuführen, habe ich folgende Fehlermeldung:
segmentation fault (core dumped)
ich kann verstehe nicht warum.
EDIT:
dies das vorrangige des Betreibers ist:
FFNeuralNetwork_(Features_<InputC, denseOutput>& phi, unsigned int neurons,
unsigned int outputs) :
ParametricRegressor(phi, outputs), BatchRegressor_<InputC, arma::vec, denseOutput>(phi, outputs)
{
layerFunction.push_back(new Sigmoid());
layerFunction.push_back(new Linear());
layerNeurons.push_back(neurons);
layerNeurons.push_back(outputs);
setupNetwork();
}
Und tatsächlich:
typedef FFNeuralNetwork_<arma::vec> FFNeuralNetwork;
Wo FFNeuralNetwork war
virtual arma::vec operator()(const InputC& input) override
{
const arma::vec& x = params.normalizationF->normalize(Base::phi(input));
forwardComputation(x);
return params.normalizationO->restore(h.back());
}
Dies ist der Konstruktor die Klasse A, das ich in dem Beispiel verwendet habe.
Hier ist der eigentliche Arbeitscode:
BasisFunctions basisPlane_ = IdentityBasis::generate(1);
DenseFeatures phiPlane_(basisPlane_);
FFNeuralNetwork planeNet(phiPlane_, 10, 1);
cout << planeNet({0.5});
Hier ist der nicht funktionierenden Code:
FFNeuralNetwork createNetwork(..){
BasisFunctions basisPlane_ = IdentityBasis::generate(1);
DenseFeatures phiPlane_(basisPlane_);
FFNeuralNetwork planeNet(phiPlane_, 10, 1);
return planeNet;
}
..
FFNeuralNetwork net = createNetwork(..);
cout << net({0.5});
Wir müssen den Code für Klasse A sehen, um diesen herauszufinden. –
es ist sehr lang, denken Sie, es ist genug, wenn ich nur das Überschreiben des Klammeroperators posten? – Samuele
Ja, schneiden Sie den Code auf die relevanten Teile ab. Ich denke, dass die Konstruktoren neben dem Klammeroperator auch interessant sein könnten. –