前提・実現したいこと
SFML2.4 非公式日本語翻訳
ここのウェブページに書いてあった"共有しているデータを保護する"
の項のプログラムをファンクタを使って練習の為書き直そうとした所上手く行きませんでした。
(ファンクタ自体このサイトを見て知った初心者です)
発生している問題・エラーメッセージ
main.cpp(7): error C2091: 関数は関数を返せません。
該当のソースコード
C++
1#include <SFML/System.hpp> 2#include <iostream> 3 4// ミューテックスオブジェクトを宣言 5sf::Mutex mutex; 6struct func { 7 void operater()() { 8 mutex.lock(); // ロック 9 10 for (int i = 0; i < 10; ++i) { 11 std::cout << "I'm thread number one" << std::endl; 12 } 13 14 mutex.unlock(); // ロック解除 15 } 16}; 17 18int main() 19{ 20 sf::Thread thread((func())); 21 thread.launch(); 22 23 mutex.lock(); // ロック 24 25 for (int i = 0; i < 10; ++i) { 26 std::cout << "I'm the main thread" << std::endl; 27 } 28 29 mutex.unlock(); // ロック解除 30 31 return 0; 32}
試したこと
main関数1行目のthread()の引数をfunc()
から(func())
に変更したところ、
main.cpp(21): error C2228: '.launch' の左側はクラス、構造体、共用体でなければなりません
という発生していたエラーは解決しました。
しかし、どの記述が関数が関数を返す形になっているか検討も着かないです…
補足情報(FW/ツールのバージョンなど)
SFML-2.5.0 Visual C++ 15 (2017) - 32-bit
Microsoft Visual Stadio 2017
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/11 11:31 編集
2018/05/11 11:34