2013-11-22 2 views
-1

Я хочу создать проект, который построен для обработки видео, и я планирую использовать openCV. Я хочу добавить класс Utils, который содержит только статические функции, и его целью является включение различных функций, которые зависят только от его параметров и выполняют различные этапы обработки, например Utils::processFramHsvSpace(cv::Mat inputFrame), который обрабатывает cv::Mat и возвращает некоторые функции, извлеченные из пространства HSV.OOP - есть ли недостатки в использовании статических методов?

Есть ли недостатки для такого подхода в плане использования памяти? Вместо этого следует добавить метод к основному классу и использовать переменные-члены класса?

+0

Почему бы не создать их в пространстве имен? – Caesar

+0

Почему не глобальные функции? Никаких недостатков в использовании памяти. Но вы используете классы для чего-то, для чего они не предназначены. Глобальные функции (либо в пространстве имен, либо нет) лучше. – john

+1

Если у вас есть только функции и нет состояния и нет четких обязанностей, тип которых должен обрабатывать, класс не лучший дизайн ... также это soooo Java. ;) Сделать их свободными функциями в именованном пространстве имен. – thokra

ответ

4

Pop викторины!

Что вы можете читать лучше:

Vector::length(v); 

v.length(); 

length(v); 

Как thokra выразилась, C++ не является Java. У вас есть возможность использовать методы класса, статические методы и функции свободной формы. Используй их. Если вам нужно сгруппировать их, поместите их в пространство имен. Это имеет то преимущество, что вы можете использовать предложение using, где ассоциация пространства имен очевидна.

+1

Если это поп-викторина, вы забыли опцию «Ничего из вышеперечисленного»;) –

Смежные вопросы