1. ホーム
  2. プログラミング言語
  3. C

error: '.' トークンの前にunqualified-idを指定する必要があります。

2022-01-21 04:35:50

C++では、ロックを実装するためにmutexヘッダファイルを導入し、mutext.lock()でロックし、mutex.unlock()でロックを解除するようにしています。

  1. #include <mutex>
  2. using namespace std;
  3. mutex t_mutex;
  4. class Csingleob
  5. {
  6. private:
  7. Csingleob(){}
  8. static Csingleob *p;
  9. public:
  10. static Csingleob* getInstance()
  11. {
  12. mutex.lock();
  13. if (p == NULL)
  14. {
  15. p = new Csingleob();
  16. }
  17. mutex.unlock();
  18. return p;
  19. }
  20. };

しかし、コンパイル時に以下のようなエラーが報告されます。

error: expected unqualified-id before '.' token mutex.lock();

 mutext.lock() で直接ロックし、mutex.unlock() でロックを解除するのは間違いです。まずクラスや構造体をインスタンス化してから "." を使って、適切なメソッドを呼び出すようにしてください。

を修正しました。

  1. #include <mutex>
  2. using namespace std;
  3. mutex t_mutex;
  4. class Csingleob
  5. {
  6. private:
  7. Csingleob(){}
  8. static Csingleob *p;
  9. public:
  10. static Csingleob* getInstance()
  11. {
  12. t_mutex.lock();
  13. if (p == NULL)
  14. {
  15. p = new Csingleob();
  16. }
  17. t_mutex.unlock();
  18. return p;
  19. }
  20. };
  21. Csingleob* Csingleob::p = NULL;