Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #33861 > unrolled thread

najprosze możliwe pytanie z C++

Started byRM <robert_magdziarz@wp.pl>
First post2020-04-14 09:49 +0200
Last post2020-04-14 14:21 +0200
Articles 12 — 4 participants

Back to article view | Back to pl.comp.programming


Contents

  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

#33861 — najprosze możliwe pytanie z C++

FromRM <robert_magdziarz@wp.pl>
Date2020-04-14 09:49 +0200
Subjectnajprosze 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]


#33862

FromEmru <emruemru1@gmail.com>
Date2020-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]


#33863

FromRM <robert_magdziarz@wp.pl>
Date2020-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]


#33864

FromEmru <emruemru1@gmail.com>
Date2020-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]


#33866

FromRM <robert_magdziarz@wp.pl>
Date2020-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]


#33875

From"M.M." <mmarszik@gmail.com>
Date2020-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]


#33878

FromRM <robert_magdziarz@wp.pl>
Date2020-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]


#33884

From"M.M." <mmarszik@gmail.com>
Date2020-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]


#33886

Fromgodek.maciek@gmail.com
Date2020-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]


#33887

From"M.M." <mmarszik@gmail.com>
Date2020-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]


#33865

Fromgodek.maciek@gmail.com
Date2020-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]


#33867

FromRM <robert_magdziarz@wp.pl>
Date2020-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