error: '.' トークンの前に未修飾の ID が必要です。
2022-01-22 06:27:20
C++では、ロック機能を実装するためにmutexヘッダーファイルが導入されており、mutext.lock()でロック、mutex.unlock()でロックを解除するようになっています。
#include <mutex>
using namespace std;
mutex t_mutex;
class Csingleob
{
private:
Csingleob(){}
static Csingleob *p;
public:
static Csingleob * getInstance()
{
mutex.lock();
if (p == NULL)
{
p = new Csingleob();
}
mutex.unlock();
return p;
}
};
しかし、コンパイル時にエラーが報告され、次のようになります。
error: expected unqualified-id before '.' token mutex.lock();
mutext.lock() で直接ロックし、mutex.unlock() でロックを解除するのは間違いです。まずクラスや構造体をインスタンス化してから "." を使って、適切なメソッドを呼び出すようにしてください。
を修正しました。
#include <mutex>
using namespace std;
mutex t_mutex;
class Csingleob
{
private:
Csingleob(){}
static Csingleob *p;
public:
static Csingleob * getInstance()
{
t_mutex.lock();
if (p == NULL)
{
p = new Csingleob();
}
t_mutex.unlock();
return p;
}
};
Csingleob* Csingleob::p = NULL;
関連
-
C++コンパイルエラー:||error: ld returned 1 exit status|.
-
C++がpythonを呼び出す
-
コンパイルエラー: 制御が非ボイド関数の末尾に達する可能性がある
-
34:5: エラー: 制御が非ボイド関数の終わりに達する可能性がある [-Werror,-Wreturn-type] エラー解析
-
C++ max() 関数エラー: 'max' の呼び出しに一致する関数がない
-
gcc/g++ コンパイル時のエラー解析で期待される型指定子の前に
-
警告: この関数では 'p' が初期化されていない状態で使用されることがあります。
-
c++ 11 random ライブラリの簡単な使い方
-
c/c++の "undefined reference to "の解決法
-
"name.bat "は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
c++ エラー: 'map' は型名ではありません。
-
C++のostreamの詳細な使用方法
-
vs2015 はソースファイル stdio.h を見つけることができない 解決策
-
C++プリントベクター
-
エラー: "***"の前にイニシャライザーがあります。
-
[C++】C++オーバーロード opeartor=非静的メンバ関数でなければならない?
-
C++によるhttpサーバー/webサーバーの作成
-
ランタイムエラー: 'std::logic_error' のインスタンスを投げた後に terminate が呼び出されました。
-
c++ベクトル使用集
-
ベクター使用時、ベクター添え字が範囲外、その他類似のエラーが発生する。