Как правильно вызвать функцию другого класса?
Это называется функция обратного вызова, или Сallback
Существует достаточно много способов для реализации коллбеков, но самым современным решением в C++ является функтор.Функтор, или функциональный объект - это просто класс с перезагруженным оператором (). Стандартная библиотека уже включает в себя интерфейс для удобного создания и использования функторов - std::function
В действии:#include <functional>

void deleteAllItems(int); // <- функция, которую нужно вызвать

std::function<void(int)> foo; // <- функтор

foo = deleteAllItems; // <- создание коллбека

foo(); // <- вызов функции deleteAllItems(int);
В другом классе я создаю указатель для этой функции.
void(InventoryContainer::*fnDelete)(unsigned int);
Но при попытке вызвать эту функцию,
this->fnDelete(this->IFrom);
студия показывает мне что this в данном случае не корректен.
1. Как правильно вызвать функцию? 
Правильно показывает. fnDelete должен быть вызван для объекта класса InventoryContainer, и синтаксис разыменования указателя на функцию-член малость другой:InventoryContainer *that;
...
(that->*fnDelete)(IFrom);2. Где то на StackOverflow видел,что для вызова такой функции нужен ещё объект.Не лучше ли тогда просто передать ссылку на объект и через него и вызвать функцию?
Смысл указателя на функцию-член в том, что он даёт возможность вызывать любую функцию с такой сигнатурой в данном объекте. Т.е. для динамического выбора:class A {
public:
  void f1();
  void f2();
};

void (A::*f)();
if (???)
  f = &A::f1;
else
  f = &A::f2;

...
A *pa;
...
(pa->*f)(); // вызывает f1 или f2