मैं क्रोनो लाइब्रेरी का उपयोग क्यों नहीं कर सकता?
नमस्ते, मैं थ्रेड के साथ कुछ आसान अभ्यास कर रहा हूं, मैं चाहता हूं कि मेरा टी 1 2 सेकंड सो जाए लेकिन मुझे यह त्रुटि मिल रही है: संख्यात्मक शाब्दिक ऑपरेटर "ऑपरेटर" खोजने में असमर्थ
वह कैसे संभव है?
#include <iostream>
#include <chrono>
#include <thread>
void printt1(int i)
{ std::this_thread::sleep_for(2s);
std::cout << i<<std::endl;
}
int main()
{
std::thread t1(printt1,1);
std::thread t2([](std::thread& t1) { t1.join();std::cout << 2<<std::endl; });
std::thread t3([](std::thread& t2) { t2.join();std::cout << 3<<std::endl; });
t3.join();
return 0;
}
जवाब
से https://en.cppreference.com/w/cpp/symbol_index/chrono_literals:
इन ऑपरेटरों को नाम स्थान में घोषित किया जाता है
std::literals::chrono_literals
, जहां दोनोंliterals
औरchrono_literals
इनलाइन नामस्थान हैं। इन ऑपरेटरों में प्रवेश के साथ प्राप्त किया जा सकताusing namespace std::literals
,using namespace std::chrono_literals
औरusing namespace std::literals::chrono_literals
।
तो बस using namespace std::literals::chrono_literals;
अपनी फ़ाइल में जोड़ें और आपको जाने के लिए अच्छा होना चाहिए।
संपादित करें:
उपरोक्त समस्या के बावजूद, आप थ्रेड्स का निर्माण t2
और t3
गलत तरीके से कर रहे हैं । एक लंबर के बजाय जो एक std::thread&
तर्क के रूप में स्वीकार करता है , आप शायद इसे लंबोदर में कैप्चर करने के लिए कहेंगे जैसे कि:
std::thread t1(printt1,1);
std::thread t2([&t1]() { t1.join();std::cout << 2<<std::endl; });
std::thread t3([&t2]() { t2.join();std::cout << 3<<std::endl; });
t3.join();