如何使用成員函式指標
很長時間沒有用過C++了,今天一位同事問我關於成員函式指標的問題。想了想,還是N年前用過一次,之後再也沒有用過,印象不太深了。查了些資料,總終於想起來了,寫一個例子在這裡,以供以後查閱吧。
//build: gcc -g -lstdc++ mfp.cpp -o mfp.exe
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
class CmdParaParser
{
public:
CmdParaParser();
~CmdParaParser();
public:
bool Parse(int argc, char* argv[]);
int GetWidth(void) const;
int GetHeight(void) const;
private:
bool ParseWidth(const char* value);
bool ParseHeight(const char* value);
private:
int m_nWidth;
int m_nHeight;
};
CmdParaParser::CmdParaParser()
{
m_nWidth = m_nHeight = 0;
return;
}
CmdParaParser::~CmdParaParser()
{
return;
}
bool CmdParaParser::Parse(int argc, char* argv[])
{
int i = 0;
int j = 0;
typedef bool (CmdParaParser::*ParamHandler)(const char* value);
struct KeyAndHandler
{
char* pszKey;
int nKeyLength;
ParamHandler Handler;
}
KeyAndHandlers[] =
{
{"--width=", sizeof("--width=") - 1, &CmdParaParser::ParseWidth},
{"--height=", sizeof("--height=") - 1, &CmdParaParser::ParseHeight},
{NULL, 0, NULL}
};
for(i = 1; i < argc; i++)
{
for(j = 0; KeyAndHandlers[j].pszKey != NULL; j++)
{
if(strncmp(argv[i], KeyAndHandlers[j].pszKey, KeyAndHandlers[j].nKeyLength) == 0)
{
ParamHandler Handler = KeyAndHandlers[j].Handler;
(this->*Handler)(argv[i] + KeyAndHandlers[j].nKeyLength);
break;
}
}
}
return m_nWidth != 0 && m_nHeight != 0;
}
int CmdParaParser::GetWidth(void) const
{
return m_nWidth;
}
int CmdParaParser::GetHeight(void) const
{
return m_nHeight;
}
bool CmdParaParser::ParseWidth(const char* value)
{
m_nWidth = atoi(value);
return true;
}
bool CmdParaParser::ParseHeight(const char* value)
{
m_nHeight = atoi(value);
return true;
}
int main(int argc, char* argv[])
{
if(argc != 3)
{
printf("Usage: %s --width=n --height=n/n", argv[0]);
}
else
{
CmdParaParser aCmdParaParser;
aCmdParaParser.Parse(argc, argv);
printf("width=%d height=%d/n", aCmdParaParser.GetWidth(), aCmdParaParser.GetHeight());
}
return 0;
}
相關文章
- [C++] 成員函式指標和函式指標C++函式指標
- C++ 成員資料指標成員函式指標簡單測試C++指標函式
- c++智慧指標中的reset成員函式C++指標函式
- C++ 成員函式指標簡單測試C++函式指標
- 指標函式 和 函式指標指標函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- 函式指標函式指標
- 【不在混淆的C】指標函式、函式指標、回撥函式指標函式
- C++ 類成員指標C++指標
- typedef void (*Fun) (void) 的理解——函式指標——typedef函式指標函式指標
- 函式指標&回撥函式Callback函式指標
- 引入const成員函式函式
- c++ 函式指標C++函式指標
- 函式指標基礎函式指標
- 關於函式指標函式指標
- C++(函式指標)C++函式指標
- C語言函式指標與回撥函式使用方法C語言函式指標
- C++中函式指標與函式物件C++函式指標物件
- c++ const 成員函式C++函式
- C++ 類成員函式C++函式
- cpp:"函式指標"的方法函式指標
- Rust中的函式指標Rust函式指標
- C語言 函式指標C語言函式指標
- 函式指標練習題函式指標
- 函式指標的重要用途——回撥函式函式指標
- C++:類的成員函式C++函式
- 靜態成員函式-this指標沒有指的是沒有給,而不是不能擁有,可以自己給呀函式指標
- perl 裡邊的 函式指標函式指標
- C++ 返回函式指標的函式C++函式指標
- 深入C++成員函式及虛擬函式表C++函式
- C語言函式指標與回撥用函式C語言函式指標
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- 類內的靜態成員函式函式
- 膨脹的template class成員函式函式
- 基類指標,子類指標,虛擬函式,override與final指標函式IDE
- 陣列,函式與指標 詳解陣列函式指標
- c++ 類的函式引用 指標C++函式指標
- 利用指標實現strncmp函式功能指標函式