Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #33861 > unrolled thread
| Started by | RM <robert_magdziarz@wp.pl> |
|---|---|
| First post | 2020-04-14 09:49 +0200 |
| Last post | 2020-04-14 14:21 +0200 |
| Articles | 12 — 4 participants |
Back to article view | Back to pl.comp.programming
najprosze możliwe pytanie z C++ RM <robert_magdziarz@wp.pl> - 2020-04-14 09:49 +0200
Re: najprosze możliwe pytanie z C++ Emru <emruemru1@gmail.com> - 2020-04-14 07:59 +0000
Re: najprosze możliwe pytanie z C++ RM <robert_magdziarz@wp.pl> - 2020-04-14 10:11 +0200
Re: najprosze możliwe pytanie z C++ Emru <emruemru1@gmail.com> - 2020-04-14 08:21 +0000
Re: najprosze możliwe pytanie z C++ RM <robert_magdziarz@wp.pl> - 2020-04-14 10:30 +0200
Re: najprosze możliwe pytanie z C++ "M.M." <mmarszik@gmail.com> - 2020-04-15 07:24 -0700
Re: najprosze możliwe pytanie z C++ RM <robert_magdziarz@wp.pl> - 2020-04-15 19:57 +0200
Re: najprosze możliwe pytanie z C++ "M.M." <mmarszik@gmail.com> - 2020-04-17 10:09 -0700
Re: najprosze możliwe pytanie z C++ godek.maciek@gmail.com - 2020-04-17 13:00 -0700
Re: najprosze możliwe pytanie z C++ "M.M." <mmarszik@gmail.com> - 2020-04-17 14:33 -0700
Re: najprosze możliwe pytanie z C++ godek.maciek@gmail.com - 2020-04-14 01:30 -0700
Re: najprosze możliwe pytanie z C++ RM <robert_magdziarz@wp.pl> - 2020-04-14 14:21 +0200
| From | RM <robert_magdziarz@wp.pl> |
|---|---|
| Date | 2020-04-14 09:49 +0200 |
| Subject | najprosze możliwe pytanie z C++ |
| Message-ID | <r73pv0$3er5h$1@portraits.wsisiz.edu.pl> |
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.
[toc] | [next] | [standalone]
| From | Emru <emruemru1@gmail.com> |
|---|---|
| Date | 2020-04-14 07:59 +0000 |
| Message-ID | <r73qhd$95q$1$Emru@news.chmurka.net> |
| In reply to | #33861 |
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";
[toc] | [prev] | [next] | [standalone]
| From | RM <robert_magdziarz@wp.pl> |
|---|---|
| Date | 2020-04-14 10:11 +0200 |
| Message-ID | <r73r6t$3et1i$1@portraits.wsisiz.edu.pl> |
| In reply to | #33862 |
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;
[toc] | [prev] | [next] | [standalone]
| From | Emru <emruemru1@gmail.com> |
|---|---|
| Date | 2020-04-14 08:21 +0000 |
| Message-ID | <r73rpd$95q$2$Emru@news.chmurka.net> |
| In reply to | #33863 |
http://www.cplusplus.com/reference/string/string/append/ http://www.cplusplus.com/reference/string/string/operator+=/ z jakiego kompilatora korzystasz?
[toc] | [prev] | [next] | [standalone]
| From | RM <robert_magdziarz@wp.pl> |
|---|---|
| Date | 2020-04-14 10:30 +0200 |
| Message-ID | <r73sbg$3eues$1@portraits.wsisiz.edu.pl> |
| In reply to | #33862 |
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.
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2020-04-15 07:24 -0700 |
| Message-ID | <36b77688-e9f3-4b96-b888-e814a94f6ccf@googlegroups.com> |
| In reply to | #33866 |
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
[toc] | [prev] | [next] | [standalone]
| From | RM <robert_magdziarz@wp.pl> |
|---|---|
| Date | 2020-04-15 19:57 +0200 |
| Message-ID | <r77hti$5up1$1@portraits.wsisiz.edu.pl> |
| In reply to | #33875 |
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.
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2020-04-17 10:09 -0700 |
| Message-ID | <d2b82d75-a925-40a5-8b05-164cb35ff565@googlegroups.com> |
| In reply to | #33878 |
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
[toc] | [prev] | [next] | [standalone]
| From | godek.maciek@gmail.com |
|---|---|
| Date | 2020-04-17 13:00 -0700 |
| Message-ID | <8e3cebe3-b7f8-4c64-b716-1c87a6d0045d@googlegroups.com> |
| In reply to | #33884 |
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";
// ...
}
//...
};
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2020-04-17 14:33 -0700 |
| Message-ID | <5df8366a-1915-4acf-a4a6-63a31d3bee40@googlegroups.com> |
| In reply to | #33886 |
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.
[toc] | [prev] | [next] | [standalone]
| From | godek.maciek@gmail.com |
|---|---|
| Date | 2020-04-14 01:30 -0700 |
| Message-ID | <078b274e-b24b-47e9-a047-ac89dfe91599@googlegroups.com> |
| In reply to | #33861 |
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ć.
[toc] | [prev] | [next] | [standalone]
| From | RM <robert_magdziarz@wp.pl> |
|---|---|
| Date | 2020-04-14 14:21 +0200 |
| Message-ID | <r749t0$3fk44$1@portraits.wsisiz.edu.pl> |
| In reply to | #33865 |
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.
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.programming
csiph-web