Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 05/09/2014 at 14:09, xxxxxxxx wrote:
User Information: Cinema 4D Version: 14 Platform: Windows ; Language(s) : C++ ;
--------- I have, in my code, variables of type String and variables of type string. I'm using some std:: stuff so I must use string instead of String. It compiles and works fine on my Mac. But while trying to compile it in Windows, I get lots of errors and the compilation fails. Is there anything that can be done?
On 05/09/2014 at 16:49, xxxxxxxx wrote:
Why does it compile without a single complain in Xcode and, in Visual Studio I get dozens of errors?!?
On 05/09/2014 at 18:39, xxxxxxxx wrote:
Are you making string explicit to the std library by using std::string for references?
On 05/09/2014 at 18:46, xxxxxxxx wrote:
I don't know what you mean. Can you give me an example?
On 05/09/2014 at 18:52, xxxxxxxx wrote:
std is a namespace. You can declare the namespace for referencing objects in that space explicitly (std::space) or implicitly (using namespace std) somewhere at the top of the file. Which to use will depend on if there are possible clashes. Let's say you have a string type in std and another in another namespace included in your code. If they are not explicitly declared, there is a chance that the compiler doesn't understand which one to use. If you are just using 'string', you must add 'using namespace std'.
On 06/09/2014 at 14:54, xxxxxxxx wrote:
Thank you so much, Robert. What was happening was the I had these two lines:
template <typename T> string tostr(const T& t) { ostringstream os; os<<t; return os.str(); } using namespace std;
and I simply had to switch them, like this:
using namespace std; template <typename T> string tostr(const T& t) { ostringstream os; os<<t; return os.str(); }
The correct way is the second, of course. But it is weird that Xcode doesn't complain and makes it work, somehow.
On 06/09/2014 at 15:59, xxxxxxxx wrote:
Technically, you can declare 'using namespace' anywhere in the global scope of the source code. You can do this with '#include" for headers as well. It is generally safer to do these first nonetheless. And you want to declare the namespace after any header that defines it (!).
On 07/09/2014 at 09:29, xxxxxxxx wrote:
All what Kuroyume wrote. However, I would encourage you to not use "using namespace x" but instead use x::function. This avoids any library conflicts.
On 07/09/2014 at 12:28, xxxxxxxx wrote:
Agreed!
On 07/09/2014 at 12:56, xxxxxxxx wrote:
Thank you all. I will take that into account in the future. In the meanwhile, I could make it all work now.