You are here:

C++/From where should i start?


 I am Kiran studying in Master of Engg.(Info. Tech)-2nd year. I am working on the project titled "Image hiding using Genetic Algorithm". I am supposed to use the VC++ as the programming langauage, but am not familier with it. I know C, C++, Java. As a novice to VC++ & keeping in mind the project domain, what should be my first step so that i can feel comfort with the progress of the project?

 At the beginning - which for software projects is doing things like requirements capture, analysis, design etc. Some of this will obviously be fixed for you in the project description - hooray, you have a bit of a start in the requirements department.
 Your next step should be to outline the scope of the project - what needs to be in and what can be left out. What requires some software, what is merely something the user does etc. Do you require a GUI interface or will a command line interface be sufficient? Is there a server component? If so what sort of client server communication are required? Is a database required? If so will a full on RDBMS (e.g. MySQL, Oracle, Sybase, MS SQL server) be required or will a few flat files be good enough? Or something in between? etc. etc.
 Once you have some idea of the main requirements and scope of the project and what sort of things in a broad sense will be needed you can start honing things down, e.g. by working through usage scenarios (use cases).
 All this is to give you some idea of what the shape of the project is and where you are going with the it. Once you have the analysis sorted out to an initial degree of usefulness (you may of course go back and revisit things later...) you can start on some design (classes, sequences, states etc...) and then eventually get to some implementation and testing (you have covered testing, specifically unit testing at this stage, have you not?). You may also find that you will need to research and areas you need to implement but do not have details on yet - your course notes, books etc. and the Internet can be of use here.
 Taking a modular, uncoupled approach in your design will help you implement and test your project one piece at a time, and possibly defer needing to know everything you do not know until you need to focus on a particular section of the design / implementation.
 While you are going through these cycles you can also be building up your tool chain. In this case you state you have to use MS VC++ (but give no hint as to which version) - this is obviously a project constraint. The Visual (the V in VC++) in Visual C++ merely refers to the fact that the compiler and linker etc. ship with a 'visual' integrated development environment (IDE) - MS Visual Studio - and that the Microsoft specific libraries (MFC and ATL) for creating full blown GUI MS Windows applications have some support within the IDE to help projects using them. You can ignore all this if it is not required and treat MS VC++ as a reasonably nice environment for creating, building, debugging native, standard, C++ command line projects.
 I say standard C++ projects but this has only really been a reasonable thing to state since MS VC++ .NET 2003 (a.k.a. version 7.1). Previous versions were OK but had some standard language features missing that are required for modern C++ and C++ libraries. MS VC++ 6.0 and earlier had an older or no implementation of the C++ standard library. The current version, MS VC++ 2008 (a.k.a. version 9.0) is quite a decent compiler and can cope with modern C++, and the SP1 update I believe shipped with much of the (optional) TR1 C++ library update to the ISO C++ standard.
 So while getting a handle on the problem of the project itself you can also install and get familiar with using MS VC++. You should refer to the documentation that ships with the version you are using. If it is a newer version then you can refer to the online documentation at in the MSDN library. The online library may contain some material for older version of VC++, but I have found that the material sometimes shrinks over time. However there appears to be documentation going back to MS VC++ 6.0 (under Visual Studio) online, see for example.
 You might practice by trying to get some of your existing C++ code to work under VC++, if it fairly standard as does not rely on platform specific (e.g. operating system specific) features or additional libraries you do not have VC++ versions for.
Hope this provides you with enough to make a start.  


All Answers

Answers by Expert:

Ask Experts


Ralph McArdell


I am a software developer with more than 15 years C++ experience and over 25 years experience developing a wide variety of applications for Windows NT/2000/XP, UNIX, Linux and other platforms. I can help with basic to advanced C++, C (although I do not write just-C much if at all these days so maybe ask in the C section about purely C matters), software development and many platform specific and system development problems.


My career started in the mid 1980s working as a batch process operator for the now defunct Inner London Education Authority, working on Prime mini computers. I then moved into the role of Programmer / Analyst, also on the Primes, then into technical support and finally into the micro computing section, using a variety of 16 and 8 bit machines. Following the demise of the ILEA I worked for a small company, now gone, called Hodos. I worked on a part task train simulator using C and the Intel DVI (Digital Video Interactive) - the hardware based predecessor to Indeo. Other projects included a CGI based train simulator (different goals to the first), and various other projects in C and Visual Basic (er, version 1 that is). When Hodos went into receivership I went freelance and finally managed to start working in C++. I initially had contracts working on train simulators (surprise) and multimedia - I worked on many of the Dorling Kindersley CD-ROM titles and wrote the screensaver games for the Wallace and Gromit Cracking Animator CD. My more recent contracts have been more traditionally IT based, working predominately in C++ on MS Windows NT, 2000. XP, Linux and UN*X. These projects have had wide ranging additional skill sets including system analysis and design, databases and SQL in various guises, C#, client server and remoting, cross porting applications between platforms and various client development processes. I have an interest in the development of the C++ core language and libraries and try to keep up with at least some of the papers on the ISO C++ Standard Committee site at


©2016 All rights reserved.