में कॉपी सरणी मैंने constexpr
कॉपी कन्स्ट्रक्टर के साथ एक कक्षा लिखी। (यह उदाहरण को सरल बनाने के लिए एक संरचना है।) फ़ील्ड में से एक एक सरणी है। मैं इसे भी कॉपी करना चाहता हूं।constexpr कन्स्ट्रक्टर
struct Foo
{
static constexpr int SIZE = 4;
constexpr Foo() = default;
constexpr Foo(const Foo &foo) :
arr{foo.arr[0], foo.arr[1], foo.arr[2], foo.arr[3]},
bar(foo.bar+1) {}
int arr[SIZE] = {0, 0, 0, 0};
int bar = 0;
};
मेरा संस्करण काम करता है लेकिन यह स्केलेबल नहीं है। अगर मैं SIZE
बदलता हूं, तो मुझे कन्स्ट्रक्टर को संशोधित करना होगा। इसके अलावा, कोड बदसूरत लग रहा है।
क्या यह कन्स्ट्रक्टर में सरणी की प्रतिलिपि बनाने का कोई बेहतर तरीका है? निर्माता constexpr
होना चाहिए।
Doesn डिफ़ॉल्ट प्रतिलिपि निर्माता नौकरी नहीं करते हैं? – juanchopanza
constexpr गारंटी नहीं है कि सरणी को उत्परिवर्तित नहीं किया जाएगा? मूल्य से प्रतिलिपि क्यों परेशान करें और न केवल एक सूचक? – tohava
@juanchopanza मैं ईमानदारी से अपने दिमाग को पार नहीं किया। लेकिन सवाल सवाल है। आप मान सकते हैं कि कक्षा में कुछ फ़ील्ड हैं जिन्हें प्रतिलिपि बनाने के लिए कुछ गणना की आवश्यकता है। इसके अलावा यह भविष्य में होगा। –