我已经离开我的常规领域去做这件事而且我遇到了一些愚蠢的复杂情况。 我已经声明了一个具有变量“int activacion”的类,然后我创建了另一个具有此前一类对象向量的类。 然后我做了另一个有lattest矢量的类。 如果我不能继续下去,我会发现它完全正常但事情是我在使用getValue()读取值时没有遇到麻烦,我似乎无法使用相同的行更改它代码与setValue();
getElementoVectorCapas(i).getElementoVectorNeuronas(j).getActivacion()<<endl;
这很有效。
getElementoVectorCapas(1).getElementoVectorNeuronas(0).setActivacion(1);
这不是。 这就像价值是固定的。它编译好吧,它只是不改变价值。 提前致谢。 我已经剪掉并粘贴了似乎相关的部分。添加&amp;签名上的标志不会让我编译。
class CNeurona{
private:
int activacion;
public:
void setActivacion(int x){
activacion = x;
}
int getActivacion(){
return activacion;
}
};
class CCapa{
private:
std::vector<CNeurona> vectorNeuronas;
public:
CCapa(int i_numNeuronas, int i_numeroInputsPorNeurona){
setNumNeuronas(i_numNeuronas);
for(c=0;c<i_numNeuronas;c++){
vectorNeuronas.push_back(CNeurona(i_numeroInputsPorNeurona));
}
}
CNeurona getElementoVectorNeuronas(int x){
return vectorNeuronas[x];
}
};
class CRed{
private:
std::vector<CCapa> vectorCapas;
public:
void setVectorEntrada(){
for(j=0;j<numNeuronasEntrada;j++){
cout<<"Introduce activaciones de capa de entrada, N"<<j<<": "<<endl;
cin >> i;
getElementoVectorCapas(0).getElementoVectorNeuronas(j).setActivacion(i);
}
答案 0 :(得分:2)
CNeurona getElementoVectorNeuronas(int x)
返回向量中CNeurona
对象的副本。当你打电话
getElementoVectorNeuronas(j).setActivacion(i);
您在setActivation
对象的副本上调用CNeurona
方法,由getElementoVectorNeuronas
返回,此副本随后丢弃。
您需要使用引用;你的功能应该是
CNeurona& getElementoVectorNeuronas(int x)
如果getElementoVectorCapas
也返回了一个副本 - 在你的情况下这是一个错误,它应该返回一个引用。