मैं क्रोनो लाइब्रेरी का उपयोग क्यों नहीं कर सकता?

Aug 18 2020

नमस्ते, मैं थ्रेड के साथ कुछ आसान अभ्यास कर रहा हूं, मैं चाहता हूं कि मेरा टी 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;
}

जवाब

8 chakaz Aug 18 2020 at 14:37

से 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();