I have learned c++ about three years and I have not used c++ in an actual project. I only used it to write some small program and example, I have read many books about c++ and algorithm, "c++ primer", "effective c++" "exceptional c++" "c++ common knowledge" " introduction to algorithm" ..., so I want to use it in an open source project to improve my c++ ability and enforce the knowledge base on books.
Geez, take your pick!
For GUI practice, look into wxWidgets.
For IDE's, CodeBlocks
There's probably a lot people on SourceForge that need help with their project.
I believe OpenOffice does some C++ coding.
More than you could shake a stick at I'm sure.
EDIT: Also, it would be good to get involved in the community of the project you're looking into coding. Start hanging out on their forums, mailing lists, and chat rooms. Find out where they have coding needs and be willing to dive in where the needs interest you.
Find out the project's coding standards and stick to it for the sake of maintainability and readability for the other project members. That will earn some respect;-)
There are many. My suggestion would be to pick a project where you would be a user too. Then you'll have a better stakeholding in the results.
I would advise choosing a project that matches both your interest in C++ and some other areas you enjoy. As an example, I am currently looking at IPCop because I wish to learn more about the language and I am interested in network security.
Since there are so many projects to choose from, I'm sure you'll be able to find one that is better suited to your interests than one chosen based on the language alone.
I don't have a specific recommendation. Others have said there are many worthy causes. I'll play devils advocate and suggest you don't go for anything mainstream, simply on the basis that, despite your three years of c++, this will be your first proper project and you will make mistakes!
That said, from your choice of books it looks like you have got off to a very good start, and you probably have the makings of a decent C++ developer in you - good luck!
It sounds like your interested in algorithms. Perhaps one of the open source 3d rendering or modelling projects?
K-3d is written in C++ with the Boost Template library There are several renderers written in C++ I think.
The key to picking a project is to find something you are going to enjoy working on.
I would say, try the Qt GUI toolkit ... it now has an awesome IDE. http://www.qtsoftware.com/
You mentioned in one of the comments above that you are interested in database related programming, you might want to check out the poco project, which is a fairly advanced collection of libraries:
Next generation C++ class libraries for network-centric applications.
The POCO C++ Libraries (POCO stands for POrtable COmponents) are open source C++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++. The libraries integrate perfectly with the C++ Standard Library and fill many of the functional gaps left open by it. Their modular and efficient design and implementation makes the POCO C++ Libraries extremely well suited for embedded development, an area where the C++ programming language is becoming increasingly popular, due to its suitability for both low-level (device I/O, interrupt handlers, etc.) and high-level object-oriented development. Of course, the POCO C++ Libraries are also ready for enterprise-level challenges.
Features
- threads, thread synchronization and advanced abstractions for multithreaded programming
- streams and filesystem access
- shared libraries and class loading
- powerful logging and error reporting
- security and encryption
- network programming (TCP/IP sockets, HTTP client and HTTP server, FTP, SMTP, POP3, etc.)
- XML parsing (SAX2 and DOM) and generation
- configuration file and options handling
- SQL database access (ODBC, MySQL, SQLite)
Some time ago, there was also some talk on sourceforge about possibly implementing an ODBMS using poco (see here).
It all depends. You must know that how important is it to choose your first open project you will hack on. A wrong project will lead you develop bad habits. The unfortunate part is: that there are sill a lot of C++ programmers and their projects which can infect you. I would suggest you to go to some open source project hosting websites such as Sourceforge, Freshmeat, or ibiblio and search for some project which should have:
- Good documentation and strong community
- Most hackable project comes with the hackers guide (the developers' guide) which itself shows that the project author wants you to help
- A discussion forum. Most projects on sourceforge etc. get a discussion forum which is not used by many. A discussion forum shows good stars.
- If you are hacking your first open source project, I suggest that your seldom make any changes but rather study the project carefully.
As per specific advice is concerned, You may try a hand with Astyle