У меня есть программа на C++ с плагинами (динамическими libs). В основной программе я хочу выполнить статическую функцию, чтобы проверить, могу ли я создать объект этого типа.Заставить повторно статическую функцию в классах наследования
Пример без динамической LIBS (не neccesary понять проблему):
#include "libs/parent.h"
#include "libs/one.h"
#include "libs/two.h"
int main(int argc, char * argv[])
{
Parent* obj;
if (One::match(argv[1]))
obj = new One();
else if (Two::match(argv[1]))
obj = new Two();
}
Теперь у меня есть с именем родительского класса интерфейса. Все плагины наследуются от этого класса. В идеале, у меня есть виртуальная статическая функция в имени родителя с именем, и все плагины должны переопределить эту функцию.
Проблема с этим кодом заключается в том, что я не могу выполнять статическую виртуальную функцию на C++, поэтому я не знаю, как решить проблему.
Жалко ми английского языка, я сделал мой лучший
Если функция 'match()' является статической, вы бы не называли ее 'One :: match()'? Почему он должен быть статичным? –
Извините, я исправил ошибку Он должен быть статичным, потому что мне нужно вызвать его перед созданием объекта – pacopepe222
Не беспокойтесь, я думаю, что использование чистого виртуального метода сработает для вас, но это не статично. Поэтому, возможно, ответы других могут помочь вам больше. –