|
하안인 님이 쓰신 글 :
: OleVariant의 Delta값이 DeltaDS->Delta값이군요.
:
: GuestProvider->ApplyUpdates(DeltaDS->Delta, 1, ErrCount);
: 로 하니 에러가 안나네요.
: 근데 3번째 파라메터값은 어드레스를 넘겨야 하는것이 아닌가요.
: GuestProvider->ApplyUpdates(DeltaDS->Delta, 1, &ErrCount);
: 로 하면 에러가 나네요
:
어드레스를 넘기면 안됩니다.
int &ErrorCount 는 포인터가 아니고, 참조매개변수(reference parameter)를 사용한 것입니다.
그러므로 세번째 인자는 &ErrCount가 아니고, ErrCount가 맞습니다.
이렇게 인자를 넘겨주게 되면 ApplyUpdates()함수에서는 자동으로 ErrCount의 주소값을 가져가게됩니다. 그리고 그 함수 내부에서는 * 연산자를 사용하지 않고 해당 변수를 포인터로 취급하게 됩니다.
다음은 책에 있는 간단한 예 입니다.
#include <iostream.h>
void f(int &n);
main()
{
int i = 0;
f(i);
cout << "Here is i's new value : " << i << '\n';
return 0;
}
// 여기서 f()는 참조 매개변수를 사용
void f(int &n)
{
// 다음문장에서는 * 가 전혀 필요없습니다.
n = 100; // f()를 호출한 인수에 100을 저장
}
|