2013-04-29 2 views
0

초보자 질문에 대해 유감이지만 함수의 매개 변수로 전달할 클래스/구조체 형식의 구성 요소를 참조하려고합니다. 나는 당신의 멤버 함수는 다음과 같습니다 가정C++에서 구조체 구성 요소를 참조하는 방법

blah.memberFunction(&blah.component) 

또는

blah.memberFunction((&blah).component) 
+0

당신은 포인터 나 참조를 통과하고 싶은가를? – Pubby

+0

C++ 11을 사용하는 경우 람다를 고려하십시오 : [] (T blah) {return blah.component; } –

+0

@Pubby reference – gr33kbo1

답변

1

사용 여부를 모르는 :

blah.memberFunction(blah.component) 

:

blah::memberFunction(blahType& component) 

이 그것을 호출하는 것은 이것이다 & ope 사용 rator는 참조와 다른 포인터를 제공합니다. 참조에는 연산자가 필요 없습니다.

0

클래스 구성 요소를 data members으로 사용하고 있습니까? 특정 경우에 대해 이야기하고 있습니다. 멤버를 매개 변수로 사용하는 메서드 호출은 대부분의 경우 쓸모가 없습니다. 클래스 메서드에 이미 데이터 멤버에 액세스 할 수

class blah 
{ 
public: 
    blah() : component(0) {} 
    void memberFunction() { component ++; } 
    int component; 
} 

int main() 
{ 
    blah b; 
    std::cout << b.component; //output = 0 
    b.memberFunction(); 
    std::cout << b.component; //output =1 
} 

공지 사항 : : 왜 그것의 자신의 방법에 대한 매개 변수로 사용한다, 그것은 좀 쓸데없는 소리하지 않는 코드를 살펴 보자?

어쨌든, 당신은 정말 receive arguments by reference의 방법 선언보다, 회원에 대한 참조를 사용하여 구현하는 좋은 이유가있는 경우 :

class blah 
{ 
public: 
    blah() : component(0) {} 
    void callMemberFunction() 
    { 
     memberFunction(component); 
    } 
    void memberFunction(int &member_reference) { member_reference++; } 

    int component; 
} 

int main() 
{ 
    blah b; 
    std::cout << b.component <<"\n"; //output = 0 
    b.callMemberFunction(); 
    std::cout << b.component <<"\n"; //output =1 
} 
관련 문제