मेरे पास the following code है जो मुझे लगता है कि संकलित होना चाहिए लेकिन नहीं।संदर्भ द्वारा enum वर्ग के साथ पास enum
prog.cpp:15:9: error: invalid initialization of non-const reference of type 'uint8_t& {aka unsigned char&}' from an rvalue of type 'uint8_t {aka unsigned char}'
foo(baz);
मेरे मन में, यह क्योंकि सब कुछ एक ही अंतर्निहित प्रकार (uint8_t) का है काम करना चाहिए:
#include <cstdint>
typedef uint8_t testtype;
enum testenum : uint8_t {
};
void foo(uint8_t& v) {}
int main() {
testtype bar;
foo(bar);
testenum baz;
foo(baz);
return 0;
}
मैं निम्नलिखित त्रुटि मिलती है। एक typedef'ed चर foo
फ़ंक्शन पर पास किया जा सकता है, लेकिन enum (जिसमें enum class uint8_t
है) नहीं हो सकता है।
मेरी प्रोजेक्ट में इसका क्या अर्थ है कि मैं अपने सभी enums को एक ओवरलोडेड फ़ंक्शन में पास नहीं कर सकता - ऐसा लगता है कि मुझे हर संभव enum के लिए एक अधिभार बनाना है।
क्या यह संकलित करने के लिए एक शानदार तरीका है, या क्या मुझे एक दूसरे चर के माध्यम से enum पास करना है जिसे मैं संदर्भ से पारित कर सकता हूं?
'testenum' 'uint8_t' से और कनवर्ट कर सकता है, लेकिन वे समान नहीं हैं। आप जो देख रहे हैं वह यह है कि रूपांतरण का नतीजा एक रैल्यू है जो गैर कॉन्स्ट संदर्भ के लिए बाध्य नहीं हो सकता है। – Dani