C language MCQ
June 13, 2012
Memory Efficient doubly linked list
June 13, 2012

Find error in the C++ code

What is the Error (if any) in the below C++ code

    class TestClass
    {
        public:
            // Constructors
            TestClass():x(0) { }
            TestClass(int a):x(a) { }
            void printValue()
            {
                std::cout<< "Value :"<<x;
            }
        private:
            int x;
    };
    int main()
    {
        TestClass obj();
        obj.printValue();
    }

Solution:

If we want to define an object of a class which uses default constructor then the object need to be defined as below

    TestClass obj; // and NOT obj()

We are creating object in our code as

    TestClass obj();

This is not creating an object, but declaring a function(prototype) obj whose return type is TestClass.

This is the problem, Since obj is not the object of class TestClass, calling function printValue using obj will give error. Hence the statement

    obj.printValue();

Is an Error, but the reason is the attempt to create object in the previous statement.

When you want to create object of a class which uses 1 argument constructor (also called type-convertor constructor), the object is defined in one of the two ways:

    TestClass obj(2);   // Like a function call
    TestClass obj = 2;

9 Comments

  1. muhammad zubair says:

    find error in this program
    #include
    #include
    Using namespace Std;
    int main();
    {
    int number;
    for(i=1; i<=6, i++)
    {
    cout<<"Value of variable i is: "<<number<<endl;
    getch();
    }

  2. Jishnu says:

    #include
    #include
    class over
    {
    public:
    void area(int);
    void volume(int);
    void area(int,int);
    void volume(int,int,int);
    };
    void over::area(int a)
    {
    Int ar;
    ar=a*a;
    cout<<ar;
    }
    void over::volume(int a)
    {
    Int vol;
    vol=a*a*a;
    cout<<vol;
    }
    void over::area(int l,int b)
    {
    Int ar;
    ar=l*b;
    cout<<ar;
    }
    void over::volume(int l,int b,int h)
    {
    Int vol;
    vol=l*b*h;
    cout<<vol;
    }
    void main()
    {
    over f;
    int a,l,b,h;
    clrscr();
    cout<>a;
    cout<>l>>b>>h;
    cout<<endl<<"area of square" ;
    f.area(a);
    cout<<endl<<"volume of square";
    f.volume(a);
    cout<<endl<<"area of rectangle";
    f.area(l,b);
    cout<<endl<<"volume of rectangle";
    f.volume(l,b,h);
    getch();
    }

  3. jnv Abhiram says:

    find error in this program plz
    Arduino code:

    #define Relay 13
    #define buzzer A0
    static const int sensorPin = 10; // sensor input pin
    int SensorStatePrevious = LOW; // previousstate of the sensor

    unsigned long minSensorDuration = 3000; // Time we wait before the sensor active as long
    unsigned long minSensorDuration2 = 6000;
    unsigned long SensorLongMillis; // Time in ms when the sensor was active
    bool SensorStateLongTime = false; // True if it is a long active

    const int intervalSensor = 50; // Time between two readings sensor state
    unsigned long previousSensorMillis; // Timestamp of the latest reading

    unsigned long SensorOutDuration; // Time the sensor is active in ms

    //// GENERAL ////

    unsigned long currentMillis; // Variabele to store the number of milleseconds since the Arduino has started

    void setup() {
    Serial.begin(9600); // Initialise the serial monitor

    pinMode(sensorPin, INPUT); // set sensorPin as input
    Serial.println(“Press button”);
    pinMode(Relay,OUTPUT);
    pinMode(buzzer,OUTPUT);
    }

    // Function for reading the sensor state
    void readSensorState() {

    // If the difference in time between the previous reading is larger than intervalsensor
    if(currentMillis – previousSensorMillis > intervalSensor) {

    // Read the digital value of the sensor (LOW/HIGH)
    int SensorState = digitalRead(sensorPin);

    // If the button has been active AND
    // If the sensor wasn’t activated before AND
    // IF there was not already a measurement running to determine how long the sensor has been activated
    if (SensorState == LOW && SensorStatePrevious == HIGH && !SensorStateLongTime) {
    SensorLongMillis = currentMillis;
    SensorStatePrevious = LOW;

    Serial.println(“Button pressed”);
    }

    // Calculate how long the sensor has been activated
    SensorOutDuration = currentMillis – SensorLongMillis;

    // If the button is active AND
    // If there is no measurement running to determine how long the sensor is active AND
    // If the time the sensor has been activated is larger or equal to the time needed for a long active
    if (SensorState == LOW && !SensorStateLongTime && SensorOutDuration >= minSensorDuration) {
    SensorStateLongTime = true;
    digitalWrite(Relay,HIGH);
    Serial.println(“Button long pressed”);
    }
    if (SensorState == LOW && SensorStateLongTime && SensorOutDuration >= minSensorDuration2) {
    SensorStateLongTime = true;
    digitalWrite(buzzer,HIGH);
    delay(1000);
    Serial.println(“Button long pressed”);
    }

    // If the sensor is released AND
    // If the sensor was activated before
    if (SensorState == HIGH && SensorStatePrevious == LOW) {
    SensorStatePrevious = HIGH;
    SensorStateLongTime = false;
    digitalWrite(Relay,LOW);
    digitalWrite(buzzer,LOW);
    Serial.println(“Button released”);

    }

    // store the current timestamp in previousSensorMillis
    previousSensorMillis = currentMillis;

    }

    }

    void loop() {

    currentMillis = millis(); // store the current time
    readSensorState(); // read the sensor state

    }

  4. hemant gacha says:

    find errors :
    #include
    void main()
    { int public=10;
    cout<public;
    }

  5. sudhanshu says:

    variable i type i,e int

  6. syed kamran shah says:

    #include<iostream
    Using namespace Std;
    int main(){
    int number;
    for (int i=0;i<=6;i++)
    {
    cout<<"Value of the variable is :"<<number;
    return 0;
    }

  7. BlackHat says:

    #include
    #include
    using namespace std;

    int main() {
    int number;
    for (int i = 1; i <= 6; i++) {
    cout << "Value of variable i is: " << i << endl;
    }
    return 0;
    }

  8. Abhi says:

    #include
    using namespace std;
    int main()
    {
    cout <> num;
    copy= num;
    while (num>0)
    {
    r= num%10;
    rev= rev*10+r;
    num= num/10;
    }
    if(copy==rev)
    cout<<"the number is palindrome"
    else
    cout<<"the number is not palindrome"
    return 0;
    }

  9. Crusher says:

    # include
    Using namespace std;
    main()
    {
    int a,b;
    cin>>a>>b;
    if(a=b)
    cout<<”a is equal to b”;
    cout<<”endl”;
    if else (a!=b)
    Cout<<”a is not equal to b”<<endl;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *