今天的一个程序出了 R6025 - pure virtual function call 错误,主要原因是在基类的构造函数中调用了纯虚函数。
1. 如果不是纯虚函数,没问题。
2. 如果构造函数直接调用纯虚函数,链接时会出错。只有通过一个其它成员函数转调一下。
下面是一个简化的例子:
class CBase
{
public:
CBase() { func2(); }
virtual void func() = 0;

void func2()
{
func();
}
};

class CDrived : public CBase
{
public:
CDrived() { }
virtual void func() { printf("hello"); }
};

int _tmain(int argc, _TCHAR* argv[])
{
CDrived * d = new CDrived();

return 0;
}

1. 如果不是纯虚函数,没问题。
2. 如果构造函数直接调用纯虚函数,链接时会出错。只有通过一个其它成员函数转调一下。
下面是一个简化的例子:
class CBase
{
public:
CBase() { func2(); }
virtual void func() = 0;
void func2()
{
func();
}
};
class CDrived : public CBase
{
public:
CDrived() { }
virtual void func() { printf("hello"); }
};
int _tmain(int argc, _TCHAR* argv[])
{
CDrived * d = new CDrived();
return 0;
}

本文探讨了在C++编程中出现R6025-purevirtualfunctioncall错误的原因及解决方案。主要分析了在基类构造函数中直接调用纯虚函数导致的链接时错误,并提供了一个具体的示例来说明如何避免此类错误。

CBase()
6623

被折叠的 条评论
为什么被折叠?



