클래스의 인스턴스를 가리키는 포인터를 함수가 다른 클래스에있는 함수로 전달하여 함수가 일부 객체에 액세스 할 수있게해야합니다 첫 번째 클래스의 변수.C++ 다른 클래스에서 함수를 가리키는 (객체를 가리키는) 포인터 전달
비록 내가 C++에 익숙하지는 않지만이 방법으로 포인터를 사용한 처음이므로이 작업을 수행하는 방법을 이해하지 못합니다. 이미 수행 한 어떤
은 다음과 유사 클래스 바에서
class foo
{
public:
int data;
};
class bar
{
public:
void function(foo *ptr); //error points to this line
};
void bar::function(foo *ptr)
{
ptr->data = 1; //do something with data inside foo class.
}
main()
{
foo foo1; //init foo as foo1.
foo *ptr_foo; //pointer of type foo called ptr_foo
prt_foo = &foo1; //point ptr_foo to the address of foo1
bar bar1; //init bar as bar1
bar1.function(ptr_foo) //call function1 and pass the address of our instance of foo to it.
}
임 점점 오류 "구문 오류 : 식별자 'foo는'"말하는 기능 (foo는 *의 PTR)를 정의하는 라인에.
main()에서 함수 (foo ptr *)를 호출 할 때 "bar :: function ': 함수가 1 개의 인수를 취하지 않음"오류가 발생합니다. 첫 번째 오류에 링크 된 것 같습니다. 예 ?
프로그램에서 나는 foo(), bar() 및 main()이 모두 헤더 파일과 연결된 여러 소스 파일에 있습니다. 이게 내 문제를 일으키는거야?
이 컨텍스트에서 포인터를 이해하기가 어려우며이 특정 문제를 해결하는 데 독서가 필요하지 않습니다.
누가이 작업을 훌륭하게 수행 할 수 있는지 말해 줄 수있는 경우 솔루션에서 주어진 문제에 대한 설명과 내가 수행 한 것이 작동하지 않는 이유가 더 좋을 것입니다.
도움 주셔서 감사합니다.
편집 : 위의 코드는 컴파일하지 않습니다. 내 실제 코드는 합리적으로 게시 할 수있는 것보다 훨씬 큽니다.
컴파일하려고 시도 할 수있는 실제 코드를 게시 할 수 있습니까? – juanchopanza
'prt_foo'가 선언되지 않았습니다. 'ptr_foo'가 있습니다. – WhozCraig
'main'에 리턴 타입을 추가하고'prt_foo'를'ptr_foo'로 수정하고'main'의 마지막 라인에 세미콜론을 추가하면 잘 컴파일됩니다. –