我有一个由多个组件使用的可重用标头。我在外部类中引入了一个成员函数和一个成员变量,并从一个组件中调用它。该函数的实现是在可重用头文件的 .cpp 中完成的。它已成功构建,但在执行工作流程并打开组件时,它无法加载并引发错误。使用可重用标头的其他组件也无法加载。
解决它... 在头文件中,我引入了一个内部类,并为内部类创建了成员变量和成员函数。我将内部类的对象创建为外部类的成员。现在一切正常。使用标头的所有组件均已正确加载。
谁能告诉当为外部类引入成员变量和函数时可能出了什么问题,以及如何通过使用内部类解决它?我只知道通过将成员变量引入外部类可能会增加可能无法正确使用的 dll 大小。但是,它是如何通过使用内部类来纠正的。内存分配在这里起作用还是由于其他原因?
下面是来自可重用标头的示例代码,它 (1) 不起作用并且 (2) 确实起作用:
(1)
class AFX_EXT_CLASS Class1
{
public:
Class1() {var = 8;};
void Func1(int local);
int var;
};
注意:Func1() 被多个组件调用,而不是它已经实现的组件。
(2)
class AFX_EXT_CLASS Class1
{
public:
Class1();
class InnerClass
{
public:
InnerClass(): var(8) {}
void Func1(int local, Class1::InnerClass* objInnerClass)
{
objInnerClass->var = local;
}
int var;
};
public:
Class1::InnerClass objMainInnerClass;
//This object is used to call Func1() from the components using the reusable header.
};