我有一個類A覆蓋括號運算符。 下面的代碼工作:分段錯誤C++,括號後的運算符
int main(){
..
A a;
cout << a({0.5});
..
}
雖然下面的代碼不起作用
A fun(){
..
A a;
return a;
..
}
int main(){
..
A a = fun();
cout << a({0.5});
}
當我執行這個第二個代碼,我有以下錯誤:
segmentation fault (core dumped)
我可以不明白爲什麼。
編輯:
這是運營商的首要:
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());
}
這是構造:
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();
}
而實際上:
typedef FFNeuralNetwork_<arma::vec> FFNeuralNetwork;
凡FFNeuralNetwork是班上 我在示例中使用了一個。
這裏實際工作代碼:
BasisFunctions basisPlane_ = IdentityBasis::generate(1);
DenseFeatures phiPlane_(basisPlane_);
FFNeuralNetwork planeNet(phiPlane_, 10, 1);
cout << planeNet({0.5});
這裏沒有工作代碼:
FFNeuralNetwork createNetwork(..){
BasisFunctions basisPlane_ = IdentityBasis::generate(1);
DenseFeatures phiPlane_(basisPlane_);
FFNeuralNetwork planeNet(phiPlane_, 10, 1);
return planeNet;
}
..
FFNeuralNetwork net = createNetwork(..);
cout << net({0.5});
我們將不得不看「class A」的代碼來判斷這個問題。 –
它很長,如果我發佈括號操作符的重寫,你認爲它是足夠的嗎? – Samuele
是的,請將代碼修剪到相關部分。除了括號運算符,我認爲構造函數也可能很有趣。 –