再次「純虛擬方法稱爲錯誤」,我查了其他類似的問題,他們不能解決我的問題。 我有一個與提到的消息崩潰。我不做任何華麗的員工。該代碼是大,所以只有重要的提取物:純粹的虛擬方法稱爲錯誤和崩潰
class cCOLLECT_STR_NODES_HELPER
{
protected:
cCOLLECT_STR_NODES_HELPER(const std::string& searchStr,
const int attribute,
const cGTI_SRCH_TREE_NAME_DLG *pDlg)
: m_compareStr(searchStr), m_attr(attribute), pSrchDlg(pDlg) {}
virtual ~cCOLLECT_STR_NODES_HELPER() {}
public:
virtual bool TreatTheNode(const cGTC_TREE_NODE *curNode) = 0;
...
}
然後去派生類:
class cCOLLECT_STR_TOP_NODES_HELPER : public cCOLLECT_STR_NODES_HELPER
{
public:
cCOLLECT_STR_TOP_NODES_HELPER(const std::string& searchStr,
const int attribute,
const cGTI_SRCH_TREE_NAME_DLG *pDlg)
: cCOLLECT_STR_NODES_HELPER(searchStr, attribute, pDlg) {}
public:
virtual bool TreatTheNode(const cGTC_TREE_NODE *curNode);
...
}
TreatTheNode()分別實現:
bool cCOLLECT_STR_TOP_NODES_HELPER::TreatTheNode(const cGTC_TREE_NODE *curNode) {...
然後派生類初始化:
cCOLLECT_STR_NODES_HELPER *pHelper;
cCOLLECT_STR_TOP_NODES_HELPER helper(searchStr, attribute, this);
pHelper = &helper;
然後pHelper傳入函數並在那裏使用:
TraverseTreeNodes(const cGTC_TREE_NODE *curNode,
cCOLLECT_STR_NODES_HELPER *pHelper) const
{
if (pHelper->TreatTheNode(curNode)) => CRASH
該項目已成功構建。怎麼了?
你使用什麼編譯器?我懷疑pHelper是零,這就是吹了... –
@Nathan Monteleone對不起,發現從側面的錯誤。不,它不是空的。 –
'項目成功建成。'嘆氣。爲什麼很多人提出一個問題來提出這個問題?只是因爲你的項目建立好並不意味着它會運行良好。其次,你做了什麼調試?第三,因爲你的程序很大,所以更有理由相信你的問題是從你沒有發佈的代碼開始的。 – PaulMcKenzie