मुझे समझ में नहीं आता क्यों सी ++ कक्षा घोषणा के भीतर परिभाषित करने के लिए केवल अभिन्न प्रकार और enum (enum एक अभिन्न प्रकार भी) की अनुमति देता है। जबकि फ्लोट प्वाइंट प्रकार (यानी डबल और फ्लोट) समेत अन्य सभी प्रकारों को कक्षा घोषणा के बाहर परिभाषित किया जाना है। स्पष्ट रूप से इसके लिए एक कारण होना चाहिए, लेकिन मैं इसे समझ नहीं सकता।सी ++ कक्षा में केवल अभिन्न या enum प्रकार क्यों शुरू किया जा सकता है?
कोड उदाहरण:
#include <iostream>
using namespace std;
struct Node {
static const int c = 0; // Legal Definition
static const long l = 0l; // Legal Definition
static const short s = 0; // Legal Definition
static const float f = 0.0f; // Illegal definition
static const string S = "Test"; // Illegal definition
static const string JOB_TYPE; // Legal declaration
static const float f; // Legal declaration
static const double d; // Legal declaration
};
const string Node::JOB_TYPE = "Test"; // correct definition
const float Node::f = 0.0f; // correct definition
const double Node::d = 0.0; // correct definition
int main() {
cout << Node::c << endl;
cout << Node::c << endl;
cout << Node::JOB_TYPE << endl;
cout << Node::f << endl;
}
यदि आप शीर्षलेख में 'नोड' संरचना डालते हैं तो आपको केवल समस्या होगी और आप इसे 2 फाइलों में शामिल करेंगे। –
यह एक बहुत अच्छा सवाल है - इस मस्तिष्क कोशिकाओं को इस रविवार को धक्का दे रहा है। धन्यवाद –
फ़्लोटिंग-पॉइंट के लिए पिकुलियर नियम आमतौर पर क्रॉस-कंपाइलर्स के बारे में चिंताओं के कारण होते हैं, यानी, एक सिस्टम पर चलने वाले कंपाइलर्स लेकिन दूसरे के लिए कोड उत्पन्न करते हैं। लक्ष्य प्रणाली से मेल खाने वाले अभिन्न प्रकारों से निपटने में काफी आसान है; किसी अन्य सिस्टम के फ़्लोटिंग-पॉइंट प्रकारों का विवरण प्राप्त करना अधिक जटिल है। –