I had this discussion with a coworker of mine just recently. He was talking about Ruby, and functional programming, python scripting, etc. How he could get a job doing that because he's mastered those. But he has no experience with .Net or Java. So I'm like. Sure you rule at those, but so does everybody else who has learned those. See the job pool for those languages are a lot smaller. And those people who learn languages outside of the norm are usually more experienced programmers to begin with (they don't teach a lot of those languages in college, they stick to the basics)... So, you are putting your resume into a smaller pool of smarter candidates. That's not a good place to be. So he's like "Well .Net you have 20 times the people applying for those jobs..." True. However, he doesn't realize that when people apply for a job, and there are a lot of resumes, you have a tendency to be able to weed out the crappy programmers for the good ones. Look at job history (flip flops between jobs every 6 months to a year), and if they learned another language that is not in taught in college. Because you can tell that person has an interest in programming, is willing to learn things on their own, and that is what matters in programming.
My advice. You have the other language, c++, now learn Java or .Net. A more common language. Now your resume will stick out. And maintain a stable job history.
Also another thing to keep in mind, communication skills. The problem I have had in my history at jobs, is that I get into "programmer mode" in my communication style. Which is fine when dealing with other programmers or technical people. However, when dealing with a non programmer, you have to learn to adjust to them. Little things like if you email a non technical person in the company, start off saying "Hi Joebob" or "Good morning." Usually I just get to the point in my emails. Then people think I'm being rude, when there was no hostility behind the words. Good communication skills is being able to recognize who you are talking to, and adapting your communication style to make them feel more comfortable. That is hard to do as a programmer as you just do a+b=c all the time. You get to the point...
When I first started at this company I was in programmer mode, and people hated me. Then I had a talking to by my COO (chief of operations) that said I need to work on communication skills, because he knows I am not intending to alienate people but I am anyhow. He just coached me a bit, and now 6 months later, I'm being told by my director (the guy right under chief) that he's seen such a 180 on my communication and that its rare to ever find a programmer that had good skills and told me if I keep it up I'll be a director/cto (chief technology officer) of this company. Because programmers never have decent communication skills and I have the ability to program and communicate. And all I do is say things like "Good morning" to people now.
I usually try to go talk to people at least 20 minutes out of my day. Stop by your bosses office and just talk to them. You might think "They think I'm slacking, and trying to avoid work", but they don't take it that way at all. They think "They are trying to get to know be better, and must be serious about staying here awhile if they are trying to befriend me." And eventually they will like you and trust you if you just do that. So you'll be at the top of the list when promotions come around compared to "Milton" (office space) who is locked in the basement. So, the point being, adapt and try to talk to people. But last week they promoted me to supervisor of our programming department, now the rest of them report to me, so they seem to be doing good on their word.
I know that applies to after being hired, but if you take a speech class in college, or something that shows you want to work on communication skills, that will go along way these days too. Communication is almost more important than technical skills. The chief even told me that he'd rather hire someone who took sports in high school or college that had no skills than someone who has mastered technical skills but had no communication skills. Because those in sports learn to be a team player and usually have better communication skills and are less "trouble" in the office. Trouble meaning someone who likes to gossip, complain, emails their boss with their frustrations, stuff like that.