C++ man page 와 bounded method.
글쓴이: litdream / 작성시간: 월, 2006/11/06 - 3:44오전
학교다닌 이후 손놓았던 C++ 를 다시 써야할 일이 생겼습니다.
제 desktop 에서 'man 3 std::string' 부터 막히더군요.
혹시, gentoo 에서 (혹은 ubuntu 에서) c++ man page 를 깔아주는 package 를 좀 알려주시면 감사하겠습니다.
현재 문제는, static 이 아닌 실제 Object 의 bounded method 를 포인터로 쓸수 있는가 하는 문제인데요.
class Person { private: int age; std::string name; public: Person(std::string, int); ~Person(); int getAge() { return this->age; } static int sGetAge(Person &p) { return p.getAge(); } };
대략 이렇다고 가정하면, (문법이 틀렸다면 너그러이 용서를)...
Person p("Man",18); int (*fp)(Person &p) = Person::sGetAge;
이것이 과연 bounded method 의 pointer 를 잡아내는것이 c++ 에서 가능한것인가 하는거죠.
int (*mp)() = p->getAge; cout << (*mp)() << endl;
쉽게 생각하고, 덜렁 저렇게 했떠니, 에러나더군요.
error: invalid conversion from 'int' to 'int (*)()'
즉, p->getAge 의 return type 이 바로 type 으로 인식되어서, 원하는데로 되지 않더군요.
python 에서 쉽게쉽게 잘 쓰다가, 잠깐 당황하게 만드는데, 막상 검색을 했더니,
어려운 문제가 맞더군요. 혹시 좋은 해결책 있으신분?
Forums:
참고하세요..
참고하세요..
--
cdecl
이렇게 하는 방법이
이렇게 하는 방법이 있었군요.
overload 되는 method 는 typedef 에서 따로 설정해주면 되는군요.
감사합니다.
삽질의 대마왕...
삽질의 대마왕...
typedef 과는 다른 문제가 아니지 않나요?
결국 객체를 연결하지 않으면 사용이 불가능한데요.
원하시는 것처럼 일반 fuction 처럼 쓸 수는 없을텐데요.
그런데, Gentoo 에서 C++
그런데, Gentoo 에서 C++ man page 가 뭔가요?
도저히 못찾겠어요. doc++ 인가 하고 했더니, 그건 emerge 에서 ebuild 에러 나고요.
우분투는 로컬로 쓸수는 없지만, 일단 네트웍에만 물리면 볼수는 있는데,
이것도 패키지 이름이 도저히 모르겠네요 :)
좀 도와주십시오. 꾸뻑.
삽질의 대마왕...
삽질의 대마왕...
$ locate
locate 해봤을때
locate 해봤을때 안나왔는데, 지금보니, 저의 gcc 에 -doc 이 붙어서 컴파일이 되어있었군요.
한번 doc 을 use 에 넣고 다시 해봐야겠습니다.
삽질의 대마왕...
삽질의 대마왕...
gcc with doc 을 하여도,
gcc with doc 을 하여도, man page 가 안뜨는군요 :(
삽질의 대마왕...
삽질의 대마왕...
doxygen 패키지가
doxygen 패키지가 설치돼있는지 확인해보세요.
별로 쓸모는
별로 쓸모는 없겠지만 간단한 함수 개체를 생각해볼 수도 있죠.
이거저거 다 귀찮다 싶으면 boost::bind가 최고입니다.
bind 는 reference 는 안되는 거죠?
value concept 아닌가요?
제가 위에서 보인
제가 위에서 보인 코드에서는 reference가 아니지만, 그것도 가능합니다.
즉 Person::getAge()에서 뭔가 변경을 한다면 p 개체가 변경되는 것이지요.
또한 const reference인 boost::cref()도 있습니다.
그런데, 여전히 man
그런데, 여전히 man std::string 이 안되고 있습니다 :(
삽질의 대마왕...
삽질의 대마왕...
댓글 달기