Programming Tutorials

Converting Pointer Parameters in C++ to Java

By: Baski in C++ Tutorials on 2007-09-15  

For the most part, it is quite easy to convert a C++ function that uses pointer parameters into its equivalent Java method. Since Java passes all objects by reference, sometimes the conversion simply requires the removal of C++'s pointer operators. For example, consider this C++ program that reverses the signs of a Coord object, which stores a pair of Cartesian coordinates. The function reverseSign() is passed a pointer to the Coord object that will be reversed. As you can see, C++'s *, &, and -> pointer operators are used to perform the operation.

// Reverse the signs of a coordinate - C++ version.
#include <iostream>
using namespace std;
class Coord
{
public:
    int x;
    int y;
};

// Reverse the sign of the coordinates.
void reverseSign(Coord *ob)
{
    ob->x = -ob->x;
    ob->y = -ob->y;
}
int main()
{
    Coord ob;
    ob.x = 10;
    ob.y = 20;
    cout << "Original values for ob: ";
    cout << ob.x << ", " << ob.y << "\\n";
    reverseSign(&ob);
    cout << "Sign reversed values for ob: ";
    cout << ob.x << ", " << ob.y << "\\n";
    return 0;
}

This program can be recoded into the following Java version. As you can see, most of the conversion involves the deletion of the C++ pointer operators. Since Java passes objects by reference, changes to the parameter automatically affect the argument.

// Reverse the signs of a coordinate - Java version.
class Coord {
    int x;
    int y;
};

class DropPointers {
    // Reverse the sign of the coordinates.
    static void reverseCoord(Coord ob) {
        ob.x = -ob.x;
        ob.y = -ob.y;
    }

    public static void main(String args[]) {
        Coord ob = new Coord();
        ob.x = 10;
        ob.y = 20;
        System.out.println("Original values for ob: " +
                ob.x + ", " + ob.y);
        reverseCoord(ob);
        System.out.println("Sign reversed values for ob: " +
                ob.x + ", " + ob.y);
    }
}

The output from both of these programs is the same and is shown here:

Original values for ob: 10, 20
Sign reversed values for ob: -10, -20





Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in C++ )

Latest Articles (in C++)