স্থির সদস্যের অপরিজ্ঞাত রেফারেন্স


91

আমি একটি ক্রস সংকলক ব্যবহার করছি। আমার কোডটি হ'ল:

class WindowsTimer{
public:
  WindowsTimer(){
    _frequency.QuadPart = 0ull;
  } 
private:
  static LARGE_INTEGER _frequency;
};

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

`উইন্ডোজটাইমার :: _ ফ্রিকোয়েন্সি 'এর অপরিবর্তিত রেফারেন্স

আমি এটিকে পরিবর্তন করার চেষ্টাও করেছি

LARGE_INTEGER _frequency.QuadPart = 0ull;

বা

static LARGE_INTEGER _frequency.QuadPart = 0ull;

তবে আমি এখনও ত্রুটি পাচ্ছি।

কেউ জানে কেন?



কোথায় (যদি কোথাও) আপনি সংজ্ঞায়িত করেছেন WindowsTimer::_frequency ?
সিবি বেইলি

@ চার্লসবাইলি ক্লাসে এটি আমার একমাত্র সদস্য।
কাকুশ

উত্তর:


107

আপনাকে _frequency.cpp ফাইলে সংজ্ঞায়িত করতে হবে।

অর্থাত্

LARGE_INTEGER WindowsTimer::_frequency;

আমার কেন এমন করা উচিত?
21

35

লিঙ্কার কোথাও ডেটা বরাদ্দ করবেন তা জানেন না _frequencyএবং আপনাকে এটি ম্যানুয়ালি বলতে হবে। আপনি এই লাইনটি সহজ যোগ করে এটি অর্জন করতে পারেন: LARGE_INTEGER WindowsTimer::_frequency = 0;আপনার সি ++ উত্সগুলির মধ্যে একটিতে।

আরো ব্যাখ্যার বিস্তারিত এখানে


28

সি ++ ১ With এর সাহায্যে আপনি আপনার পরিবর্তনশীল ইনলাইনটি ঘোষণা করতে পারেন , আর কোনও সিপিপি ফাইলে এটি সংজ্ঞায়িত করার দরকার নেই।

inline static LARGE_INTEGER _frequency;

এটি আমাকে একটি ত্রুটি দেয়error: 'foobar' declared as an 'inline' field
পেড্রো হেনরিক

4
এনভিএম, আমি স্রেফ আমার জিসিসিকে মিনজিডাব্লু ম্যানেজারের মাধ্যমে 6.3 থেকে 8.2 এ আপডেট করেছি এবং এটি দুর্দান্ত কাজ করে।
পেদ্রো হেনরিক

24

যদি শ্রেণীর অভ্যন্তরে কোনও স্থিতিশীল ভেরিয়েবল ঘোষণা করা থাকে তবে আপনার এটি সিপিপি ফাইলে এটি সংজ্ঞায়িত করা উচিত

LARGE_INTEGER WindowsTimer::_frequency = 0;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.