개인용 벡터가 두 개인 클래스가 있습니다. 에 액세스하거나이 값을 수정, 처음에 나는 그런push_back 2 개의 메소드가있는 전용 벡터
void classA::pushVector(double i)
{
this->vector.push_back(i);
}
double classA::getVector(int i)
{
return vector[i];
}
나는 내가 필요로 무엇을 사업자의 많은 과부하를해야 찾을 때까지 잠시 동안 일
등의 방법을 사용, 그래서 그것을 변경하려고합니다 얻고 자 즉, 값 대신 직접
void classA::setVector(vector<double> vector)
{
this->vector = vector;
}
vector<double> classA::getVector()
{
return vector;
}
를 벡터를 설정하기 위해, 또한 얻을 읽고 쓸 수있는 방법을 설정할 수있는 개인를 ClassA 요소를 가지고있는 ClassB가,이 말한다. 문제는 클래스 A의 끝 벡터에 값을 푸시하려고 할 때였습니다.
void classB::setFirstValue(double first)
{
this->getClassA().getVector().push_back(first);
}
이것은 벡터에 전혀 영향을주지 않습니다. 그것은 변하지 않은 채로 남아 있고 왜 그럴 수 없는지 ... 어떤 아이디어입니까?
이것이 OP가 경험하는 동작의 이유이기는하지만, 내부 데이터에 대한 const가 아닌 참조는 전달해서는 안됩니다. jmclem을 사용하면 classA의 벡터 사용자에게 저장하는 데이터에 실제로 얼마만큼의 액세스 권한이 필요하며 classA의 멤버로 필요한 기능을 직접 구현해야합니다. – haffax
완벽하게 작동했습니다. 감사합니다. haffax가 말했듯이, const는 제거되어야했습니다. 그것에 대해 무엇을해야할 지 알게 될 것입니다. 어쩌면 그 요소들이 사적 일 필요는 없지만, 나는 "좋은"구조를 형성하려고 노력했을 것입니다. 어쩌면 이것이 최선의 방법이 아닐 수도 있습니다. 도움 주셔서 감사합니다. – jmclem