Это означает, что я бы никогда сделать это:
Код: Выделить всё
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");
Код: Выделить всё
static constexpr uint8_t USER_STATUS_PENDING = 1;
static constexpr uint8_t USER_STATUS_ACTIVATED = 2;
< /code>
Сообщение об ошибке, хотя и остается прежним, поэтому мне интересно, какова лучшая практика для объявления таких констант и призыв к ним извне. Кроме того, я должен объявить их в файле заголовка .h
Подробнее здесь: https://stackoverflow.com/questions/797 ... calls-in-c