再次“纯虚拟方法称为错误”,我查了其他类似的问题,他们不能解决我的问题。 我有一个与提到的消息崩溃。我不做任何华丽的员工。该代码是大,所以只有重要的提取物:纯粹的虚拟方法称为错误和崩溃
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