競プロ用のメモ

競プロのメモです。競プロで得たc++の知識を書きます。atcoder緑が書いてます。

modintのコンパイルエラー

拾ってきたmodintをコンパイルオプション付きでコンパイルすると,エラーを吐く.

main.cc: In constructor ‘mint::mint(long long int)’:
main.cc:12:20: warning: declaration of ‘x’ shadows a member of ‘mint’ [-Wshadow]
   12 |     mint(long long x=0) : x((x%mod+mod)%mod) {}

xという名前の変数が被ってますよ,という警告. 私が拾ってきたmodintはこんな感じになっていたので,

class mint {
    long long x;
public:
    mint(long long x=0) : x((x%mod+mod)%mod) {}

コンストラクタを一部修正.これで変数xがなくなる.

    mint(long long a=0) : x((a%mod+mod)%mod) {}