< Index #1 | Index #2 | Building and Running C++ .Net 2005 EE >


 

 

Step-by-step On Using Visual Studio .Net 2003

Building the C++ .Net Console Application

 

 

 

 

 

Note: The code used based on the old C++ .Net syntax.

 

1.        Start Microsoft Visual Studio .NET 2003 and create a new Visual C++ Console Application (.NET) project named Structs. File menu Project... submenu. Type the project name in the Name: field. Adjust the project location in Location: if needed. Leave the Solution name as given (by default it is same as project name).

 

Invoking the new project window

 

Figure 1: Invoking the new project window.

 

The new project window, selecting Console Application (.NET)

 

Figure 2: The new project window, selecting Console Application (.NET)

 

2.        Open the Structs.cpp, the main project file. At the top of the Structs.cpp file, immediately under using namespace System;, add the following structure definition:

// The Point structure definition

__value struct Point

{

    public:

        int x, y;

};

The Solution Explorer window

 

Figure 3: The Solution Explorer window

 

Adding a structure to the main project file

 

Figure 4: Adding a structure to the main project file

 

The __value and struct keywords start a structure definition, and you’ll notice that structures look very similar to classes in the way they are defined. The body of the structure is enclosed in braces and finishes with a semicolon, and the public and private keywords are used to set the access level for structure members. Notice the use of the __value keyword here. This keyword tells the compiler that this is a value type and not a traditional C++ structure. It’s important that you remember to use __value when defining your structures. This simple structure represents a point on a graph, so it has two integer data members representing the x and y coordinates.

 

3.        To create and initialize a Point object, add the following lines to the _tmain function of your application, replacing the Console::WriteLine(S"Hello World");. Notice the _tmain instead of main used in VC++ 2003. _tmain will compiled to wide character (wmain) or ANSI (main) and it is visible in VC++ 2003 only because in VC++ 2005 the main is default to wide character or Unicode.

// TODO: Please replace the sample code below with your own.

// Create a Point

Point p1;  // use the default constructor

 

// Initialize its members

p1.x = 10;

p1.y = 20;

 

Creating and initializing Point object

Figure 5: Creating and initializing Point object.

 

Notice that the code doesn’t use the new (new syntax uses gcnew) operator. The new operator is used to create references to objects, and value types aren’t accessed by reference. Instead, a Point has been created on the program stack instead of the heap, and you access it directly as p1. Because the data members are public at this point, you can access them using the familiar dot notation.

 

4.        Add two lines to print out the value of one of the struct members, like this:

Console::Write(S"p1.x is ");

Console::WriteLine(p1.x);

Printing out the structure member

 

Figure 6: Printing out the structure member.

 

5.        Compile and run the program at this point, you should see the output p1.x is 10. To build, select the Build menu Build Solution submenu and to run select Debug Start Without Debugging submenu as shown below. You can use the buttons or short cut menu as well.

 

Building a solution

 

Figure 7: Building a solution.

 

 

 

 

 

 

Running a program without debugging

 

 

Figure 8: Running a program without debugging.

 

A program console output

 

Figure 9: A program console output.

 

6.        Let do some more work. Add the following two lines immediately after the public declaration in your Point structure definition.

Point() { x = 0; y = 0; }

Point(int xVal, int yVal) { x = xVal; y = yVal; }

Adding a user defined constructor

 

Figure 10: Adding a user defined constructor.

 

The first constructor takes no arguments and simply sets both data members to 0. A constructor that takes no arguments is called a default constructor. The second constructor takes two int values and uses them to initialize the x and y data members. In this case, the arguments are simply being copied into the data members, but it would be simple to add some checking to ensure that the data passed in is correct. Anyone who has used C++ before will be familiar with the use of default arguments on constructors. You can’t use default arguments on managed types in Visual C++, so you need to provide an explicit default constructor.

 

7.        You can now add extra code to your _tmain function to create and initialized Points. Edit the _tmain by entering the following codes.

Point p1;  // use the default constructor

Point p2(10,20);     // use the second constructor to set x to 10 and y to 20

Creating and initializing another Point object

 

Figure 11: Creating and initializing another Point object.

 

8.        Add the following code to see the effect. Notice the using of the string modifier "L" instead of "S" as used in the old C++ syntax. L is for Unicode (optionally used in the new C++ .Net) and the S is for managed string (only used in old C++ .Net).

Console::Write(S"p1.y is ");

Console::WriteLine(p1.y);

 

Console::Write(S"p2.x is ");

Console::WriteLine(p2.x);

Console::Write(S"p2.y is ");

Console::WriteLine(p2.y);

Adding codes to display values

 

Figure 12: Adding codes to display values.

 

9.        Finally, compile and run your program and the following output should be expected.

 

A sample console program output

 

Figure 13: A sample console application program output.

 

 

 

 

Part 1 | Part 2


 

< Index #1 | Index #2 | Building and Running C++ .Net 2005 EE >