PHP VS C ++: Как я могу объявить константы класса, которые используются в вызовах методов в C ++?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 PHP VS C ++: Как я могу объявить константы класса, которые используются в вызовах методов в C ++?

Сообщение Anonymous »

Я приезжаю из PHP, где обычно никогда не имею глобальных констант. Например, если у меня есть пользователи класса и метод Add (int $ status, string $ username) , то статус пользователя является постоянным только известным только пользователям класса .
Это означает, что я бы никогда сделать это:

Код: Выделить всё

define('USER_STATUS_PENDING', 1);
define('USER_STATUS_ACTIVATED', 2);

$users = new Users();
$users->add(status: USER_STATUS_PENDING, 'James');
< /code>
Вместо этого я бы определил константы в классе (PHP 8.3): < /p>
class Users {
public const int USER_STATUS_PENDING = 1;
public const int USER_STATUS_ACTIVATED = 2;

public function add(int $status, string $username) {
...
}
}
< /code>
Вызов метода будет выглядеть так: < /p>
$users = new Users();
$users->add(status: $users::USER_STATUS_PENDING, 'James');
< /code>
Однако я не уверен, применимо ли мое мышление (которое приходит от PHP) также к C ++. Потому что я попробовал следующее: < /p>
class Users {
public:
const uint8_t USER_STATUS_PENDING = 1;
const uint8_t USER_STATUS_ACTIVATED = 2;

void add(uint8_t status, std::string username) {
...
}

};

Users Users;
Users.add(Users::USER_STATUS_PENDING, "James");
Скоро я получил ошибку сообщения об ошибке компилятора: неверное использование нестатического члена данных . Поэтому я изменил его на статический contexpr :

Код: Выделить всё

        static constexpr uint8_t USER_STATUS_PENDING = 1;
static constexpr uint8_t USER_STATUS_ACTIVATED = 2;
< /code>
Сообщение об ошибке, хотя и остается прежним, поэтому мне интересно, какова лучшая практика для объявления таких констант и призыв к ним извне. Кроме того, я должен объявить их в файле заголовка .h 
или .cpp исходный файл?

Подробнее здесь: https://stackoverflow.com/questions/797 ... calls-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»