嘗試新思路 CError的另一種實現方式

2021-07-25 08:06:04 字數 1030 閱讀 6812

**如下:

#ifndef __myerror_h__

#define __myerror_h__

#include "error.h"

#include

#include

template

class cerrors

void add(int index, std::function fct)

template

void add(int index, object* object, int (object::*method)(args...))

));}

template

void add(int index, object* object, int (object::*method)(args...) const)

));}

template

void add(int index, const object* object, int (object::*method)(args...) const)

));}

void remove(int index)

int onerror(int index, args... args)

};class cmyerror : public linwin::cerror

virtual

int onerror(int code, int level)

public:

cerrors m_errors;

};#endif

我想試著把所有錯誤統一處理,cerror因此而來。我把錯誤分為兩類,呼叫系統函式出錯和自定義錯誤。呼叫系統函式出錯,統一以索引0來自動呼叫處理函式。自定義的錯誤就以錯誤碼code來自動呼叫處理函式。

在類cmyerror中,真正去處理錯誤的是乙個模板類,這個模板類的實現,使用c++11標準中的std::function和lambda表示式。這樣我們就可以把所有的形式的函式新增到模板類中,包括全域性函式,成員函式,仿函式或者lambda表示式等等。

嘗試新思路 Select模型的另一種實現

新增乙個clogic類 標頭檔案logic.h ifndef logic h define logic h include myerror.h include myexit.h include myselectevent.h include socketimpl.h include select.h...

選擇排序的另一種思路

在我們上次的選擇迴圈中,我們用了乙個minindex變數來儲存最小值的下標,每次迴圈完畢後用最小值下標的元素與手元素進行交換,遍歷一次,記錄下最值元素所在位置,遍歷結束後,將此最值元素調整到合適的位置。但是我們還有種交換變數的方式,我們可以用待排序陣列中的元素與待排序序列中的首元素比較,如果比待排序...

詳解KMP演算法 另一種思路

這個演算法單純從 理解起來比較費勁.我覺得從思路上理解是非常簡單的.傳統演算法的劣勢很容易察覺.那就是會有重複的匹配過程.我們假定 text為待查文字,pattern 為匹配串.text aaaab pattern ab 按以下傳統演算法.則直到迴圈到最後一次比較.才找到 ab 而前面很多迴圈都是做...