Если Вы ищете способ применить "статическое" ключевое слово к классу, как Вы может в C#, например, то Вы не будете в состоянии, не используя Управляемый С++.
, Но взгляды Вашего образца, просто необходимо создать общедоступный статический метод для объекта BitParser. Как так:
BitParser.h
class BitParser
{
public:
static bool getBitAt(int buffer, int bitIndex);
// ...lots of great stuff
private:
// Disallow creating an instance of this object
BitParser() {}
};
BitParser.cpp
bool BitParser::getBitAt(int buffer, int bitIndex)
{
bool isBitSet = false;
// .. determine if bit is set
return isBitSet;
}
можно использовать этот код для вызова метода таким же образом как примера кода.
Hope, которая помогает! Аплодисменты.
Я решил опубликовать последние цитаты, использованные в моем рабочем сценарии инициализации:
COMMAND="/path/to/script -opt param param2 param3"
DAEMON_OPTS=" 0.0.0.0:$PORT -dest $OUTPUT_DIRECTORY -command"
start-stop-daemon --start --background --make-pidfile --pidfile $PID --exec $DAEMON -- $DAEMON_OPTS "\"$COMMAND\""
Очевидно, неполный и нефункциональный пример, но я надеюсь, что вы уловили его суть. Двойные кавычки с ускользнувшей внутренней парой - вот что помогло.
Попробуйте
DAEMON_OPTS="-la '/folder with space/'"
start-stop-daemon --start ... -- $DAEMON_OPTS
Что происходит, так это то, что внешние кавычки DAEMON_OPTS
удаляются, а внутренние (одинарные кавычки) остаются. Итак, следующая строка будет гласить:
start-stop-daemon --start ... -- -la '/folder with space/'
, что вы хотите.
Также можно добиться того же эффекта с помощью экранирования, но для этого вам понадобится много экранирований: Во-первых, чтобы защитить кавычки во время присваивания, затем позже, когда начальная строка будет проанализирована и переменные будут расширены, и, возможно, даже больше или меньше. :) bash -x
- ваш друг для подобных вещей.
[EDIT] Приведенный выше код работает с оболочкой Bourne и Korn на чем угодно, кроме Linux. В Linux с ksh
или bash
оболочка добавит дополнительные кавычки, которые все испортят:
FOLDER="/folder with space/"
DAEMON_OPTS="-la $FOLDER"
start-stop-daemon --start ... -- $DAEMON_OPTS
Если вы запустите его с -x
, вы увидите:
FOLDER='/folder with space/'
DAEMON_OPTS='-la ~/folder with space/'
ls -la '~/folder' with space/
Таким образом, только первое слово получает защиту (вероятно, потому, что оно содержит специальный символ). Если я добавлю одинарные кавычки вокруг $ FOLDER
, я получу:
FOLDER='/folder with space/'
DAEMON_OPTS='-la '\''~/folder with space/'\'''
ls -la ''\''~/folder' with 'space/'\'''
Отлично. Обходной путь: разделите параметры на две переменные: одну с параметрами, а другую с путем:
start-stop-daemon --start ... -- $DAEMON_OPTS "$DAEMON_PATH"
[EDIT2] Это тоже работает:
FOLDER="$HOME/folder with space/"
opt[0]=-la
opt[1]=$FOLDER
ls "${opt[@]}"
т.е. поместить слова в массив.
Вы пробовали сделать наоборот с кавычками? Примерно так:
DAEMON_OPTS='-la "/folder with space/"'
Я не уверен, но это может сработать?
(Я бы опубликовал это как комментарий к предыдущему ответу, если бы у меня было достаточно репутации для этого).