重複の可能性:
「不正な関数キャスト」警告を無効にする
私はc++関数ポインターに頭を悩ませようとしています。学習経験を基本的に保つために、テスト関数ポインターの例を作成しました。最終的には、オブジェクトのメソッドをコールバックできるように、すべての準備ができているインスタンス化されたオブジェクトを参照で渡したいと思います。ただし、学習と理解のために、c++関数ポインターの基本に固執したいと思います。.cppファイルを使用して実際の例を作成しましたが、成功していない部分は、.cppおよび.hの関数ポインターを使用しています。.cppファイルと.hファイルを使用しているときに、学習例を正常に機能させるために正しく行っていないことは何ですか?
exeCallback.hとexeCallback.cppの2つのファイルを作成しました。
.hファイル
/*
File: exeCallback.h
Header file for exeCommand Library.
*/
#ifndef EXECALLBACK_H
#define EXECALLBACK_H
#include "mbed.h"
#include <map>
class exeCallback
{
public:
exeCallback();
void my_int_func(int x);
void (*foo)(int);
private:
};
#endif
.cppファイル:
/*
File: exeCallback.cpp
Execute functions in other Sensor libraries/classes
Constructor
*/
#include "mbed.h"
#include "ConfigFile.h"
#include "msExtensions.h"
#include "cfExtensions.h"
#include "exeCallback.h"
exeCallback::exeCallback()
{
foo = &exeCallback::my_int_func;
/* call my_int_func (note that you do not need to write (*foo)(2) ) */
foo( 2 );
}
void exeCallback::my_int_func(int x)
{
printf( "%d\n", x );
}