Code::Blocks Forums

User forums => Help => Topic started by: Avan on March 25, 2021, 01:23:01 pm

Title: Why is this wrong?
Post by: Avan on March 25, 2021, 01:23:01 pm
Why is this a binary operation?
Code
wxString Dir = _T("X:\\") + _T("Foldername");

error: invalid operands of types 'const wchar_t [4]' and 'const wchar_t [9]' to binary 'operator+'
And why do these proper string concats not ptoduce the same error?
Code
wxString name = _T("Foldername");
wxString Dir  = _T("H:\\") + name;
wxString Dir  = file.GetPath() + _T("Foldername");
Title: Re: Why is this wrong?
Post by: BlueHazzard on March 25, 2021, 01:52:25 pm
In general this is not a general programming forum. This is a codeblocks forum, so this is the wrong place for this question.

Disclaimer, this is more pseudo code than actual code:
In your case i think _T defines to something like this
Code
#define _T(n) _(n) 
or something like this
Code
#define _T(n) _TCHAR(n)
what translates to
Code
#define _TCHAR(n) wchar_t(n)

so your final line of code is
Code
wxString Dir ={'X', ':' + '\\'} + {'F','o','l','d','e','r','n','a','m','e'};
what is like

Code
wxString Dir = char[4] + char[11];
and adding arrays is not defined...
what is a binary operation, normally


Title: Re: Why is this wrong?
Post by: Avan on March 25, 2021, 03:08:14 pm
Ah, I was wondering why there were [n] brackets but it didn't sink in.

It's actually:
#define _T(x) __T(x)

Solved it with:
Code
wxString Dir.append(_T("X:\\"), _T("Foldername"));
Edit: Spoke too soon. The compiler didn't complain but appending two stings this way crash CB when executed. I had to use an assign and then append the next.

An intermediate variable also did the trick.

Thanks, and I will NEVER ask for help in the Help forum again. What w.a.s I thinking... ;D
Title: Re: Why is this wrong?
Post by: BlueHazzard on March 25, 2021, 05:26:42 pm
Quote
Thanks, and I will NEVER ask for help in the Help forum again. What w.a.s I thinking...
Every question related to codeblocks is welcome :)

if you are using wx3.... you can omit the _T part, if you do not plan to translate your application.
Title: Re: Why is this wrong?
Post by: Avan on March 25, 2021, 10:24:14 pm
Quote
if you are using wx3.... you can omit the _T part, if you do not plan to translate your application.

Good to know.
Title: Re: Why is this wrong?
Post by: Miguel Gimenez on March 25, 2021, 10:34:40 pm
Translation uses _().