저는 C++의 초보자입니다. 이제 모델을 구현하려고합니다. 클래스의 각 멤버에 대해 대입 연산자 (setter)를 오버로드하는 것이 맞습니까? 구성원이 아닌 함수가 개인/보호 데이터 멤버에 새 값을 설정하려고하는 경우 이는 매우 중요합니다. 예를 들어 :C++에서 클래스의 각 멤버에 대한 assingment 연산자를 코딩하는 방법
class Human {
private:
double aWeight[100]; /* let's say I want to keep...
...a set of 100 weight measures of this human.*/
// member functions and constructors here...
};
이제, 내가 많은 모델을 가지고 있기 때문에 이러한 측정 ... 비회원을 시뮬레이션하는 비 멤버 함수가 있다고 가정하자 나는 작은 함수로 각각의 방정식을 구현하고있어 model.cpp 파일. 분명히 내가 멤버 함수 이름 setWeight (이중 에너지, INT 일)을 가질 수있다, 그 작업을 수행합니다 :
bool ComputeWeight(Human * humanpt, double energy, int day){
humanpt->aWeight[day] = energy * 0.8;
}
는 지금, 나는 토론에 가져다
bool ComputeWeight(Human * humanpt, double energy, int day){
humanpt->setWeight(energy, day);
}
을하지만, 큰 모델을 코딩 할 때 새 데이터 멤버 값을 계산하고 집합 함수를 통해 개체 내에서 값을 업데이트하는 것은 매우 비실용적입니다. 클래스의 각 데이터 멤버에게 연산자 = 오버로드를 코딩 할 수 있습니까? 그래서 내 첫 번째 예제에서와 똑같이 내 Compute 함수를 진행하면서 멤버 aWeight에 대해 내 연산자를 사용할 수 있습니까?
많은 관심을 가져 주셔서 감사합니다.
'할당 연산자 (setter로서)'이것은 두 가지 다른 것들입니다. 대입 연산자 또는 setter 함수에 대해 묻고 있습니까? –
'a = b; '로 갈 때 연산자 구문에'a '의 내부 멤버를 지정해야합니다. 또한 포인터보다는 참조로 전달하는 것이 더 일반적입니다. ** 추가 : ** 당신은'ComputeWeight()'를'Person'의 친구로 만들 수 있기 때문에 필요할 경우 개인 회원들에게 접근 할 수 있습니다. – Galik
나는 setter로서 대입 연산자에 대해 묻고있다. 어쩌면 내가 틀렸어. 그러나, 저는 aWeight 배열에 새로운 값을 설정하고 싶습니다. 저는 그것을 세터와 함께 할 것입니다, 그렇죠? 그러나 operator =를 setter로 코딩 할 수는 없으므로 aWeight [day] = 일부 계산 된 값을 코딩 할 수 있습니까? – mcarrol