Не необходимый для экспорта класса только с виртуальными / подставляемыми функциями?

Я знаю, что не совсем понимаю вашу модель данных. Однако попробуйте заменить таблицы BOM и BomTable на производную таблицу, подобную этой, которая даст вам по одной строке для каждой записи Child с наибольшим значением Childrev без использования GROUP BY. [112 ]

SELECT *
FROM   (
           SELECT *
                , ROW_NUMBER() OVER (PARTITION BY Child ORDER BY Childrev DESC) AS ROW_NBR
           FROM   BOM
       ) AS x
WHERE  x.ROW_NBR = 1;

Вот документация для OVER Clause .

Noel

5
задан kbluck 16 February 2009 в 03:17
поделиться

4 ответа

Я корректен в вере, что не необходимо отметить тот класс как экспортируемое использование __ declspec, если Вы только собираетесь вызвать виртуальные или подставляемые функции на его экземплярах?

Да, это корректно, и это - то, что COM делают, DLL только expotys 4 метода, один из них возвращается к фабрике классов, которая все ее участники являются чистыми виртуальными функциями.

С другой стороны действительно ли необходимо экспортировать объявление класса, если Вы хотите назвать статически определенные функции членства?

Нет, просто экспортируйте статические функции членства.

7
ответ дан 13 December 2019 в 22:17
поделиться

Это не необходимо, только если функция/класс имеет все, с чем это является определение в заголовочном файле. Это не иждивенец на виртуальности.

Так, если Вы не экспортируете весь свой класс, это применимо клиентским кодом до него, не имеют никакого общедоступного или защищенного функционального определения в cpp файле.

Можно также объявить только, что определенные функции членства экспортируются вместо целого класса, при помощи __ declspec в объявлении функции а не в объявлении имени класса.

1
ответ дан 13 December 2019 в 22:17
поделиться

Я корректен в вере...

Да я думаю так, но:

  • Необходимо протестировать это (я не могу в данный момент),

  • Вы могли бы хотеть остерегаться использования встроенные методы: потому что при изменении их позже затем, необходимо восстановить любой компонент, который зависит от (был создан с), этот класс (т.е. DLL больше не вообще хорошо изолирован или автономный... встроенные методы в порядке в единственном DLL, но способствующие своего рода 'аду DLL', если используется в экспортируемом интерфейсе DLL).

С другой стороны действительно ли необходимо экспортировать объявление класса, если Вы хотите назвать статически определенные функции членства?

Если не целый класс, необходимо экспортировать, по крайней мере, те отдельные статические методы.

1
ответ дан 13 December 2019 в 22:17
поделиться

Изменение имен C ++ является препятствием на пути к успеху написания модулей кросс-компилятора, просто объявите класс, который вы хотите предоставить, как интерфейс, не содержащий ничего, кроме виртуальных функций. Компоновка класса с виртуальными функциями может быть «стандартизирована», подумайте о COM.

1
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: