के साथ मुसीबत में चल रहा है मैं मुसीबत में चलाने जबकि स्थिरांक के साथ एक कक्षा आरंभ:constexpr
क्यों एक त्रुटि में एक ही कक्षा के परिणाम में एक सदस्य के लिए सूचक के साथ initialisation? त्रुटि "उपयोग" श्रेणी के बिना त्रुटि आती है!
class A
{
private:
int a;
const int* const aptr;
public:
constexpr A(int _a):
a(_a)
, aptr(&a) // why aptr could not be initialized?
{}
};
class Data { } d1;
class B
{
private:
Data* dptr1;
public:
constexpr B(Data* _p): dptr1(_p) {}
};
class Use
{
static constexpr A a{2}; // fail! error: field initializer is not constant
static constexpr B b{&d1}; // works
};
@ मॉर्वेन: जब तक 'एपीआरटी' का निर्माण किया जा रहा है, तब तक 'ए 'पहले ही बनाया जा चुका है और इसका एक वैध पता है। – Mankarse
मैं g ++ के साथ 'उपयोग' के 'ए' और' बी 'आउटिसडे को प्रारंभ करता हूं, आपको' क्षमा करें, अनुपूरक: निरंतर अभिव्यक्ति में बनाए जा रहे ऑब्जेक्ट के मान का उपयोग 'मिलता है। – Morwenn
मुझे लगता है कि आपके पास या तो एक टाइपो या यूबी है: आप फ़ंक्शन पैरामीटर का पता ले रहे हैं, जो 'ए' के सीटीओ के समाप्त होने के बाद और मौजूद नहीं है। शायद आप 'constexpr ए (int और _a) 'चाहते हैं? – dyp