Monday, October 5, 2009

VC++ in VS 2008 - Part 2- Adding a cpp file having code

After my first small "class A" program in VS 2008, I moved forward to add the same code in a separate file and to access/call that class object in my main program file. I want to mention that I have added a new cpp file by right clicking on the solution and then Add -> New Item -> C++ file(.cpp). I have given my newly added cpp file as "A.cpp".

Therefore I have(1) "VCApp.cpp" having "main" function. (2) "A.cpp" is new file name where I want to add my class A. And then I want to access that class in my main function.

Following is my defination of class "A" which I want to put in "A.cpp"

public class A{
public:
A()
{
Console::WriteLine("Inside A constructor.");
};
};

and I access the class A in my main function as following way ,


int main(array ^args)
{
A* o = new A();
return 0;
}

I put above code and while building, found following compile time error(s),
----------------------------------------------------------------------------------
fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
error C2065: 'A' : undeclared identifier
error C2065: 'o' : undeclared identifier
error C2061: syntax error : identifier 'A'
----------------------------------------------------------------------------------
To get around of this error (1) Add the following line in A.cpp at the top of it.
#include "stdafx.h"

(2) Add the following line to the top of "VCApp.cpp" file,
#include "A.cpp" ---- adding this line helps compiler to refer defination class A to find in "A.cpp" file.

Now if I compile the code then there is no compile time error and I got following out put in my console output,

Inside A constructor.
Press any key to continue . . .

Happy coding !!!

Exploring VC++ in Visual Studio 2008

Last couple of day I had been thinking of doing some hands on C++. So I have my VS 2008 editor and I leaverage the facilities out of it and started my C++ coding ( After many a years ... possibly after graduation days !!!)

I created a new Project from File->New ->Project -> CLR Console Application then I gave a name "VCApp".

In the project solution I can see that "VCApp.cpp" is the file where I can add my code/any custom written class.

When I have added a custom class named "A". Following is my code for my custom class,


public class A
{
public:
A()
{
Console::WriteLine("Inside A constructor.");
}
}

Though above is a very simple code snippet I was surprised to see following compile time errors
---------------------------------------------------------------------------------------
error C2628: 'A' followed by 'int' is illegal (did you forget a ';'?)
error C3874: return type of 'main' should be 'int' instead of 'A'
error C2664: 'A::A(const A &)' : cannot convert parameter 1 from 'int' to 'const A &'
---------------------------------------------------------------------------------------
I just did a quick inspection in my code then then found that code needs the scope termination operator ";" in proper places. So I modified as following ,

public class A{
public:
A()
{
Console::WriteLine("Inside A constructor.");
};
} ;

Just added a semicolon (1) while closing at end of constructor and (2) End of class and I found the build was succeeded.