Well, if it works with your python program, then I'd say you've eliminated bash as a suspect. So it's likely something funky with the c++. For comparison, here's a quickie hello world source, compile, and run:
helloworld.cpp
Code:
#include <iostream>
int main( int argc, char *argv[] )
{
std::cout << "Hello world!" << std::endl;
return 0;
}
Plus the compilation and command substitution tests:
Code:
$ g++ -o a.out helloworld.cpp
$ ./a.out
Hello world!
$ myvar=$(./a.out); echo "$myvar - test"
Hello world! - test
$ bash --version
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.