[英]function pointer in c++ class throws compiler error
我是 function 指针的新手,并试图将 function 指针作为参数从一个 class 传递给另一个指针并出现编译器错误。
'fncptr1':不是 class 或命名空间名称”
我究竟做错了什么?
fncptr1.h
#ifndef FNCPTR1
#define FNCPTR1
#include "fncptr2.h"
class fncptr1
{
public:
int addition(int a,int b);
void testfncptr();
};
#endif // !FNCPTR1
fncptr1.cpp文件
#include "fncptr1.h"
#include <iostream>
using namespace std;
int fncptr1::addition(int a,int b)
{
return a + b;
}
void fncptr1::testfncptr()
{
fncptr2 f;
f.implfncptr(&addition);
}
fncptr2.h
#ifndef FNCPTR2
#define FNCPTR2
#include "fncptr1.h"
class fncptr2
{
public:
int implfncptr(int (fncptr1::*add)(int,int));
};
#endif // !FNCPTR2
fncptr2.cpp文件
#include "stdafx.h"
#include "fncptr2.h"
#include <iostream>
using namespace std;
fncptr1 ff;
int fncptr2::implfncptr(int (fncptr1::*add)(int, int))
{
return (ff.*add)(1,2);
}
主.cpp
fncptr1 f;
f.testfncptr();
fncptr2.h
和fncptr1.h
的包含。 而是将它们添加到fncptr1.c
和fncptr2.c
中。f.implfncptr(&fncptr1::addition);
而不是f.implfncptr(&addition);
在fncptr1.cpp
中fncptr1.h
#ifndef FNCPTR1
#define FNCPTR1
class fncptr1
{
public:
int addition(int a, int b);
void testfncptr();
};
#endif // !FNCPTR1
fncptr2.h
#ifndef FNCPTR2
#define FNCPTR2
class fncptr1;
class fncptr2
{
public:
int implfncptr(int (fncptr1::* add)(int, int));
};
#endif // !FNCPTR2
fncptr1.cpp文件
#include "fncptr1.h"
#include "fncptr2.h"
#include <iostream>
using namespace std;
int fncptr1::addition(int a, int b)
{
return a + b;
}
void fncptr1::testfncptr()
{
fncptr2 f;
f.implfncptr(&fncptr1::addition);
}
fncptr2.cpp文件
#include "fncptr2.h"
#include "fncptr1.h"
#include <iostream>
using namespace std;
fncptr1 ff;
int fncptr2::implfncptr(int (fncptr1::* add)(int, int))
{
return (ff.*add)(1, 2);
}
主.cpp
#include "fncptr1.h"
int main()
{
fncptr1 f;
f.testfncptr();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.