저는 Menu 클래스를 코딩하려고하는 초보자이며 다른 클래스의 일부인 함수를 호출 할 수 있기를 원합니다. 나는 인터넷에서 철저히 연구했지만, 내가 찾은 대답은 나의 필요에 맞지 않는다.다른 클래스의 클래스 함수를 C++의 포인터를 통해 호출하십시오.
나는 주위를 엉망#include <iostream>
class Class1;//forward declaration
typedef void (Class1::*FunctionPtr_t)();//type: Pointer to a function in Class1 scope
class Class1
{
public:
void function1()
{std::cout << "function1 executed!";}//Test function to execute from Class2
};
class Class2
{
public:
FunctionPtr_t myfcnptr = NULL;//Pointer to a function in Class1
};
int main()
{
Class2 myclass2;
myclass2.myfcnptr = &Class1::function1;//Assign function to pointer (Everything OK here)
(myclass2.*myfcnptr)();//Compilation Error: 'myfcnptr' was not declared in this scope
}
이 두 클래스 친구를 만들어 거의 모든 곳에서 범위 연산자를 사용 :
여기에 내 문제를 정의하는 코드의 간단한 조각이다. 나는 해결책이 아주 쉬워야하고 우스 꽝스러운 실수를하고 있음을 알고 있지만 나는 그것을 잡지 못한다! 양해 해 주셔서 감사합니다.)
해당 클래스의 멤버 함수를 호출하려면 'Class1'객체가 필요합니다. 함수 포인터로 정말 엉망이 필요합니까? – user463035818
당신은 원래의 문제와 달성하고자하는 것을 더 잘 설명해야합니다. 함수 포인터가 필요한 이유와 게시 한 코드가 왜 명확하지 않기 때문에 [xy 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)처럼 보입니다 (공격) 작은 의미가 내게 – user463035818
의도 범죄;). Arduino 프로젝트의 메뉴를 만들려고하는데 각 메뉴 옵션이 함수를 트리거합니다.메뉴 클래스는 일반적이므로 함수의 일반적인 배열을 관리 할 수 있어야하며 궁극적으로 건설 프로세스에서 지정됩니다. 그러나 일부 기능은 다른 클래스에 속합니다. 예를 들어, 메뉴는 데이터베이스 클래스에 의해 관리되는 데이터베이스에 액세스합니다. 그러나 메뉴 클래스에는 함수 (예 : readData)에 대한 참조가 전달되고이를 호출 할 수 있어야합니다. – Leo