मैंने उसी प्रोजेक्ट में एक और .cpp और .h फ़ाइल में एक वर्ग बनाया, और एक गणना कोड की कोशिश की। मैंने इसके लिए "co" नाम से एक ऑब्जेक्ट बनाया है। मैं फ़ाइल बनाता और चलाता हूं, और यह कुछ भी नहीं दिखाता है। ऐसा क्यों हो रहा है और इसे कैसे ठीक किया जाए? कोड:

मुख्य.सीपीपी

 #include <iostream>
#include <fstream>
#include <string>
#include "CalculatorClass.h"
using namespace std;

int main()
{
  calculatorClass co ();

}



कैलकुलेटरक्लास.सीपीपी

#include "calculatorClass.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
calculatorClass :: calculatorClass ()
{

int x = 25;
int y = 37;
int z = 51;
int a = 14;
int b = 63;
int c = 75;
cout << x * y * z * a * b * c ;

}

कैलकुलेटरक्लास.एच

#ifndef CALCULATORCLASS_H
#define CALCULATORCLASS_H


class calculatorClass
{
    public:
        calculatorClass (int hello);

        calculatorClass();

    protected:

    private:
};

#endif // CALCULATORCLASS_H

धन्यवाद!

c++
0
Alex11001100 12 जुलाई 2020, 06:53
4
calculatorClass co (); co नाम के एक फ़ंक्शन की घोषणा है जो कोई पैरामीटर नहीं लेता है और एक calculatorClass देता है। आपके प्रोग्राम में calculatorClass का कोई इंस्टेंस नहीं बनाया गया है। इसे बनाएं calculatorClass co;
 – 
Igor Tandetnik
12 जुलाई 2020, 06:55
1
आपका कोड वर्ग नियंत्रकों का उपयोग करता है जैसे कि वे कार्य हैं। बस एक फ़ंक्शन लिखें यदि आप यही चाहते हैं, तो जिस तरह से आप हैं उस तरह से कक्षा का उपयोग करने का कोई मतलब नहीं है।
 – 
john
12 जुलाई 2020, 08:35
@ जॉन, मैंने इसे थोड़ा बदल दिया है शायद वह सिर्फ रचनाकारों को बेहतर ढंग से समझने की कोशिश कर रहा है।
 – 
Geno c
12 जुलाई 2020, 08:40

2 जवाब

ऐसा लगता है कि आप एक constructor बनाने की कोशिश कर रहे हैं तो सबसे पहले आपको अपने calculatorClass.h को देखना होगा। इस तरह दिखने के लिए आपको इसे बदलने की आवश्यकता है क्योंकि एक constructor एक member function है जिसका नाम class के समान है।

#ifndef CALCULATORCLASS_H
#define CALCULATORCLASS_H


class calculatorClass
{
public:
    calculatorClass(); //Constructor.

protected:

private:
};
#endif // CALCULATORCLASS_H

फिर आपके calculatorClass.cpp में आपको इसे इसमें बदलना होगा। एक कंस्ट्रक्टर की बाहरी परिभाषाओं का फंक्शन हेडर इस तरह का रूप लेता है:

Classname::Classname(Parameters)

#include "calculatorClass.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
   calculatorClass::calculatorClass() // Changed.
{

    int x = 25;
    int y = 37;
    int z = 51;
    int a = 14;
    int b = 63;
    int c = 75;
    cout << x * y * z * a * b * c;

}

फिर अपनी main.cpp फ़ाइल में आप calculatorClass वर्ग की एक instance परिभाषित करने जा रहे हैं, जो मैंने किया और उसका नाम calc रखा। अब, फ़ंक्शन calculatorClass को main() में स्वचालित रूप से कॉल किया जाता है।

#include <iostream>
#include <fstream>
#include <string>
#include "CalculatorClass.h"
using namespace std;

int main()
{
    calculatorClass Calc; // Define a calculatorClass object
    return 0;
}

बस ध्यान दें, जब आप ints का उपयोग करते हैं तो उनमें केवल 32 बिट होते हैं। तो इन सभी बड़ी संख्याओं के साथ आप गुणा करने का प्रयास कर रहे हैं, यह एक बड़े ऋणात्मक मान पर लुढ़क जाएगा और आपको सही उत्तर नहीं मिलेगा। आप शायद long long int का उपयोग करना चाहें

0
Geno c 12 जुलाई 2020, 12:48
1
आपने क्या बदला है और उन परिवर्तनों की आवश्यकता क्यों पड़ी, इसका स्पष्टीकरण आपको शामिल करना चाहिए।
 – 
underscore_d
12 जुलाई 2020, 12:16

बदलें कैलकुलेटरक्लास सह (); कैलकुलेटर क्लास सह के लिए। यह काम करेगा। स्पष्टीकरण निम्नलिखित प्रश्न के रूप में है - C++: चेतावनी: C4930: प्रोटोटाइप फ़ंक्शन को कॉल नहीं किया गया (क्या एक चर परिभाषा का इरादा था?)

कैलकुलेटर क्लास सह (); आप कोई वस्तु नहीं बना रहे हैं; आप एक समारोह घोषित कर रहे हैं।

0
bharath kumar amarnath 12 जुलाई 2020, 15:54