News:

When registered with our forums, feel free to send a "here I am" post here to differ human beings from SPAM bots.

Main Menu

Why is this wrong?

Started by Avan, March 25, 2021, 01:23:01 PM

Previous topic - Next topic

Avan

Why is this a binary operation?
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?

wxString name = _T("Foldername");
wxString Dir  = _T("H:\\") + name;
wxString Dir  = file.GetPath() + _T("Foldername");

BlueHazzard

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
#define _T(n) _(n)
or something like this
#define _T(n) _TCHAR(n)
what translates to
#define _TCHAR(n) wchar_t(n)

so your final line of code is

wxString Dir ={'X', ':' + '\\'} + {'F','o','l','d','e','r','n','a','m','e'};

what is like


wxString Dir = char[4] + char[11];

and adding arrays is not defined...
what is a binary operation, normally



Avan

#2
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:
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

BlueHazzard

QuoteThanks, 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.

Avan

Quote from: BlueHazzard on March 25, 2021, 05:26:42 PM
Quoteif you are using wx3.... you can omit the _T part, if you do not plan to translate your application.

Good to know.

Miguel Gimenez