Thread View: pl.comp.programming
12 messages
12 total messages
Started by RM
Tue, 14 Apr 2020 07:49
najprosze możliwe pytanie z C++
Author: RM
Date: Tue, 14 Apr 2020 07:49
Date: Tue, 14 Apr 2020 07:49
14 lines
1248 bytes
1248 bytes
Uczę się C++. Mam taki kod: #include <string> ... std::string errors; ... errors += "Invalid usage. Result directory must be different from application directory.\n"; Nie rozumiem dlaczego błąd: żaden operator "+=" nie pasuje do tych argumentów operacji -- typy operandów: const std::__cxx11::string += const char [70] Tym bardziej że w innym miejscu podobne przypisanie += się kompiluje.
Re: najprosze możliwe pytanie z C++
Author: Emru
Date: Tue, 14 Apr 2020 07:59
Date: Tue, 14 Apr 2020 07:59
9 lines
1293 bytes
1293 bytes
W dniu Tue, 14 Apr 2020 09:49:50 +0200, użytkownik RM napisał: > żaden operator "+=" nie pasuje do tych argumentów operacji -- typy > operandów: const std::__cxx11::string += const char [70] spróbuj może "Invalid usage..." przypisać najpierw do jakiegoś stringa std::string tmp = "Invalid usage. Result directory must be different from application directory.\n";
Re: najprosze możliwe pytanie z C++
Author: RM
Date: Tue, 14 Apr 2020 08:11
Date: Tue, 14 Apr 2020 08:11
16 lines
1575 bytes
1575 bytes
W dniu 14.04.2020 o 09:59, Emru pisze:
> W dniu Tue, 14 Apr 2020 09:49:50 +0200, użytkownik RM napisał:
>
>> żaden operator "+=" nie pasuje do tych argumentów operacji -- typy
>> operandów: const std::__cxx11::string += const char [70]
>
> spróbuj może "Invalid usage..." przypisać najpierw do jakiegoś stringa
>
> std::string tmp = "Invalid usage. Result directory must be different from
> application directory.\n";
>
src/obfuscator.cpp:258:19: error: passing ‘const string {aka const
std::__cxx11::basic_string<char>}’ as ‘this’ argument discards
qualifiers [-fpermissive]
errors += tmp;
Re: najprosze możliwe pytanie z C++
Author: Emru
Date: Tue, 14 Apr 2020 08:21
Date: Tue, 14 Apr 2020 08:21
4 lines
1143 bytes
1143 bytes
http://www.cplusplus.com/reference/string/string/append/ http://www.cplusplus.com/reference/string/string/operator+=/ z jakiego kompilatora korzystasz?
Re: najprosze możliwe pytanie z C++
Author: godek.maciek
Date: Tue, 14 Apr 2020 08:30
Date: Tue, 14 Apr 2020 08:30
17 lines
1823 bytes
1823 bytes
W dniu wtorek, 14 kwietnia 2020 09:49:53 UTC+2 użytkownik RM napisał: > Uczę się C++. Mam taki kod: > > #include <string> > ... > std::string errors; > ... > errors += "Invalid usage. Result directory must be different from > application directory.\n"; > > Nie rozumiem dlaczego błąd: > żaden operator "+=" nie pasuje do tych argumentów operacji -- typy > operandów: const std::__cxx11::string += const char [70] > > Tym bardziej że w innym miejscu podobne przypisanie += się kompiluje. Wklej może cały kod na jakiś gist albo pastebin, bo tak to się nie da nic powiedzieć.
Re: najprosze możliwe pytanie z C++
Author: RM
Date: Tue, 14 Apr 2020 08:30
Date: Tue, 14 Apr 2020 08:30
15 lines
1565 bytes
1565 bytes
W dniu 14.04.2020 o 09:59, Emru pisze: > W dniu Tue, 14 Apr 2020 09:49:50 +0200, użytkownik RM napisał: > >> żaden operator "+=" nie pasuje do tych argumentów operacji -- typy >> operandów: const std::__cxx11::string += const char [70] > > spróbuj może "Invalid usage..." przypisać najpierw do jakiegoś stringa > > std::string tmp = "Invalid usage. Result directory must be different from > application directory.\n"; > Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a całość była robiona w metodzie obfuscator::make_result_dir() const i właśnie to const przeszkadzało.
Re: najprosze możliwe pytanie z C++
Author: RM
Date: Tue, 14 Apr 2020 12:21
Date: Tue, 14 Apr 2020 12:21
9 lines
1394 bytes
1394 bytes
W dniu 14.04.2020 o 10:30, godek.maciek@gmail.com pisze: >> Tym bardziej że w innym miejscu podobne przypisanie += się kompiluje. > > Wklej może cały kod na jakiś gist albo pastebin, bo tak to się nie da nic powiedzieć. > Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a całość była robiona w metodzie obfuscator::make_result_dir() const i właśnie to const przeszkadzało.
Re: najprosze możliwe pytanie z C++
Author: M.M.
Date: Wed, 15 Apr 2020 14:24
Date: Wed, 15 Apr 2020 14:24
44 lines
2648 bytes
2648 bytes
On Tuesday, April 14, 2020 at 10:30:41 AM UTC+2, RM wrote:
> W dniu 14.04.2020 o 09:59, Emru pisze:
> > W dniu Tue, 14 Apr 2020 09:49:50 +0200, użytkownik RM napisał:
> >
> >> żaden operator "+=" nie pasuje do tych argumentów operacji -- typy
> >> operandów: const std::__cxx11::string += const char [70]
> >
> > spróbuj może "Invalid usage..." przypisać najpierw do jakiegoś stringa
> >
> > std::string tmp = "Invalid usage. Result directory must be different from
> > application directory.\n";
> >
> Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a
> całość była robiona w metodzie
> obfuscator::make_result_dir() const
> i właśnie to const przeszkadzało.
Nie rozumiem.
U mnie nie ma problemu:
[[[[[[
#:~/test_str$ cat > main.cpp
#include <string>
#include <iostream>
int main() {
std::string str;
str += "test\n";
std::cout << str;
return 0;
}
#:~/test_str$ g++ main.cpp -o test_str
#:~/test_str$ ls -la
razem 28
drwxr-xr-x 2 m m 4096 kwi 15 16:21 .
drwxr-xr-x 22 m m 4096 kwi 15 16:19 ..
-rw-r--r-- 1 m m 132 kwi 15 16:21 main.cpp
-rwxr-xr-x 1 m m 13536 kwi 15 16:21 test_str
#:~/test_str$ ./test_str
test
]]]]]
Pozdrawiam
Re: najprosze możliwe pytanie z C++
Author: RM
Date: Wed, 15 Apr 2020 17:57
Date: Wed, 15 Apr 2020 17:57
10 lines
1420 bytes
1420 bytes
W dniu 15.04.2020 o 16:24, M.M. pisze: >> Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a >> całość była robiona w metodzie >> obfuscator::make_result_dir() const >> i właśnie to const przeszkadzało. > > Nie rozumiem. Zmienna errors (pole klasy obfuscator) nie może być zmodyfikowana wewnątrz metody const klasy obfuscator.
Re: najprosze możliwe pytanie z C++
Author: M.M.
Date: Fri, 17 Apr 2020 17:09
Date: Fri, 17 Apr 2020 17:09
15 lines
1832 bytes
1832 bytes
On Wednesday, April 15, 2020 at 7:57:06 PM UTC+2, RM wrote: > W dniu 15.04.2020 o 16:24, M.M. pisze: > >> Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a > >> całość była robiona w metodzie > >> obfuscator::make_result_dir() const > >> i właśnie to const przeszkadzało. > > > > Nie rozumiem. > > Zmienna errors (pole klasy obfuscator) nie może być zmodyfikowana > wewnątrz metody const klasy obfuscator. Dlaczego u mnie działa? Pozdrawiam
Re: najprosze możliwe pytanie z C++
Author: godek.maciek
Date: Fri, 17 Apr 2020 20:00
Date: Fri, 17 Apr 2020 20:00
31 lines
2421 bytes
2421 bytes
W dniu piątek, 17 kwietnia 2020 19:09:09 UTC+2 użytkownik M.M. napisał:
> On Wednesday, April 15, 2020 at 7:57:06 PM UTC+2, RM wrote:
> > W dniu 15.04.2020 o 16:24, M.M. pisze:
> > >> Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a
> > >> całość była robiona w metodzie
> > >> obfuscator::make_result_dir() const
> > >> i właśnie to const przeszkadzało.
> > >
> > > Nie rozumiem.
> >
> > Zmienna errors (pole klasy obfuscator) nie może być zmodyfikowana
> > wewnątrz metody const klasy obfuscator.
>
> Dlaczego u mnie działa?
>
> Pozdrawiam
Bo nie używasz tego w metodzie zadeklarowanej jako const.
Pewnie gdyby OP wkleił cały kod, nie byłoby wątpliwości. Ale z jego wyjaśnienia wynika, że miał to użyte jakoś tak:
class obfuscator {
std::string errors;
//...
void make_result_dir() const {
// ...
errors += "Invalid usage";
// ...
}
//...
};
Re: najprosze możliwe pytanie z C++
Author: M.M.
Date: Fri, 17 Apr 2020 21:33
Date: Fri, 17 Apr 2020 21:33
36 lines
2551 bytes
2551 bytes
On Friday, April 17, 2020 at 10:00:33 PM UTC+2, godek...@gmail.com wrote:
> W dniu piątek, 17 kwietnia 2020 19:09:09 UTC+2 użytkownik M.M. napisał:
> > On Wednesday, April 15, 2020 at 7:57:06 PM UTC+2, RM wrote:
> > > W dniu 15.04.2020 o 16:24, M.M. pisze:
> > > >> Znalazłem i poprawiłem błąd. errors było polem w klasie obfuscator a
> > > >> całość była robiona w metodzie
> > > >> obfuscator::make_result_dir() const
> > > >> i właśnie to const przeszkadzało.
> > > >
> > > > Nie rozumiem.
> > >
> > > Zmienna errors (pole klasy obfuscator) nie może być zmodyfikowana
> > > wewnątrz metody const klasy obfuscator.
> >
> > Dlaczego u mnie działa?
> >
> > Pozdrawiam
>
> Bo nie używasz tego w metodzie zadeklarowanej jako const.
>
> Pewnie gdyby OP wkleił cały kod, nie byłoby wątpliwości. Ale z jego wyjaśnienia wynika, że miał to użyte jakoś tak:
>
> class obfuscator {
> std::string errors;
> //...
> void make_result_dir() const {
> // ...
> errors += "Invalid usage";
> // ...
> }
> //...
> };
Ok, dzięki.
Pozdrawiam.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads