在我的主类中,我有一个 person 对象,在 person 类中,它包含一个指向 Strategy 对象的指针。我正在尝试这样做:
person.strategyPointer->getStrategyType()
但是当我打印出来时,我得到一个特殊的数字,3435973836。这可能意味着我的 strategyPointer 尚未初始化。
在我的 Person 类头文件中,我声明了这一点:
Strategy* strategyPointer;
在 Person.cpp 文件中,我像这样初始化指针。
Person::Person()
: strategyPointer(nullptr)
{
}
如果我将指针指向 null,为什么编译器仍然抱怨我没有初始化 strategyPointer?或者可能因为它指向 null,它超出范围并被删除?实际上,我在解析时将指针指向某些东西。我做这样的事情:
StrategyType newStrat;
newStrat.setStrategyType(strategyType);
person.strategyPointer = &newStrat
我正在使用继承,而 Strategy 是我的基类。但是,它稍后会在我的主源文件中抱怨初始化。我不知道这个初始化问题是怎么回事。我也不能将指针指向一个虚假的 Strategy 对象。
编辑:我刚刚在我的 Person 头文件 Strategy newStrategy 中添加了一个新的变量声明;稍后我将创建的 StrategyType 对象分配给 newStrategy,并将 strategyPointer 指向 &newStrategy。这应该可以防止我创建的 StrategyType 对象超出范围,对吗?但是在我的 main.cpp 中,当我尝试打印 person.stratPointer->getStrategyType(); 时,我仍然得到相同的值;但是,如果我打印出 person.newStrategy.getStrategyType(),我会得到我想要的值。