Жесть полная.
class iClass {
public:
void method1();
virtual method2();
}
Это не абстрактный класс, у абстрактного должно быть недоопределенное поведение, т.е. хотя бы один pure-virtual метод. У вас есть виртуальный метод, но для него ожидается релазация. Если бы iClass был бы абстрактным, то код
new iClass();
никак бы не скомпилился
Как правильно создать экземпляр класса myClass через интерфейс iClass и использовать у этого экземпляра method3()?
Правильно - никак, задача поставлена некорректно. Если у вас есть некоторый интерфейс, работать нужно через него. Если вам нужно создавать экземпляры различных классов-реализаций, вы должны писать new КонкретныйКласс(), а потом уже при желании, приводить к типу интерфейса. Если вам нужен method3, то вам НЕ НУЖЕН iClass, вам нужен myClass, т.к. именно В НЕМ есть method3.
Если у вас будет стоять задача создания экземпляра конкретного (неабстрактного) класса в зависимости от каких-то параметров, почитайте про фабрики. Но для начала разбреритесь с основами, вы пока не понимаете, что делаете.