OK, well I have been reading up on tutorials about C++ and have taken a college class on C++ programming (community college). I have read through everything in the tutorial on this site also. I understand just about everything in it.
My problem is, I learned all this complicated stuff, but I have no idea how to make something truly useful. Like, I can use cin and cout to make some basic calculations on things and output and read in from files. I can make classes. That's all great, but how do I use these tools to actually make something? I don't know, it's weird. I have a good understanding of most of the basic to advanced topics of C++, but even if I had a simple idea for a program, I wouldn't even know where to start. What do I do now? What should I learn? What should I try to make?
Well, it gets harder once you get to this point...you need to have a goal (as you know). Is there anything you are learning C++ to do? i.e. make a game, etc? If you are making a game, you can do something like a simple text game.
What if I wanted to make something like an "auto" for an online (text based) game. I would design a program to send different commands to the server to do different things. Or I could make something simpler like a paint program like microsoft's basic one. Or I could make my own text editor to edit and save files like notepad/word pad.
Idk, I really don't care too much what I do, but the things I listed I would have absolutely no idea on how to get even the slightest bit started.
Here's an idea:
1. Download an open source project from your web site of choice (e.g. SourceForge). Preferably a small project, but it's better if it uses some GUI library. The visual feedback is important at first. It lets you know you're actually making progress.
2. Compile it.
3. Think up something you would like to change about it.
4. Read and understand the code until you know what part you would need to modify in order to make that change.
5. Write the modifications.
This process teaches you a few important skill of software development: how to build extraneous code, how to use libraries, and how to read and modify other people's code.
Another thing you can do is write something you actually need. Last year I had the same problem you're having. I was also frustrated that the free automatic wallpaper switchers I found didn't behave just like I wanted them to, so I wrote my own. 350 LOC (not counting libraries) and I still use it today.
... That's all great, but how do I use these tools to actually make something? I don't know, it's weird. I have a good understanding of most of the basic to advanced topics of C++, but even if I had a simple idea for a program, I wouldn't even know where to start. What do I do now? What should I learn? What should I try to make?
It sounds like you are missing a Software development process[1]. Looking into Object-oriented analysis and design(OOAD)[2] may be a good next step.
As to what you should try to make; It doesn't matter too much, as long as you have an enthusiasm for it . Set your sights high and use this larger project to define smaller test projects to learn specific subjects. This will also help you run through the analysis, design, implementation and testing phases more often so you get used to doing them.
Develop a simple game. Take something like Connect Four. Start by just providing a Window where two players can drop tokens and clear the screen. After that try to implement further features. Here are my suggestions (topics covered in parenthesis):
- Basic game (GUI, threading, Data structures, Design)
Use a toolkit like Gtk, Wx to build a simple windows. Design a class hierarchy to use.
- Highscore (Database, file access)
Store game results, playtime etc.
- Networking (TCP/IP, Sockets)
It's always fun to develop networking applications.
- AI (Algorithm)
What could be more fun than beating the machine?
1. Download an open source project from your web site of choice (e.g. SourceForge). Preferably a small project, but it's better if it uses some GUI library. The visual feedback is important at first. It lets you know you're actually making progress.
2. Compile it.
3. Think up something you would like to change about it.
4. Read and understand the code until you know what part you would need to modify in order to make that change.
5. Write the modifications.
This process teaches you a few important skill of software development: how to build extraneous code, how to use libraries, and how to read and modify other people's code.