我正在調試一些代碼。執行已達到此方法:比較指針。多重繼承問題?
void EventNotifier::notify_observers(SpEventInfo pEvent, Observable* target)
{
std::list<Observer*>::iterator it;
for (it = m_observers.begin(); it != m_observers.end(); ++it)
{
Observable* observedTarget = (*it)->target();
bool fNotify = (observedTarget == target);
...
上一個摘錄的最後一句已執行。 observerTarget和target兩個變量都具有相同的值,但boolean fNotify爲false!涉及的「目標」對象使用多重繼承,「可觀察」是父母之一。但是所有東西都被賦予了Observable,所以比較應該只是相同類型的指針。實際上,調試器對兩個指針都顯示相同的值。
我不知道是這個問題。任何幫助都非常感謝。謝謝
塞西Salmeron
嘗試使用'dynamic_cast'。 – imreal
你怎麼知道這個target和observedTarget是一樣的?你打印出來/在調試器中看着它們嗎?它們是指向相同還是實際指針的對象。前者並不意味着後者也成立。 –
嘗試打印出他們的地址,如果他們不是相同的,那麼他們不是相同的分配對象。 –