ФлеймФорумПрограммирование

Ищу человека который объяснит и научит C# (22 стр)

Страницы: 118 19 20 21 22 23 Следующая »
#315
17:06, 4 дек 2021

Ghost2
> сказочно одаренный фантазёр.
Это какраз я.

Ghost2
> И ещё - я бы посмотрел, как бы это сделал на юнионах лично ты, лол

union conv{
size_t v;
void* p;
};

{
  int v=42;
  conv.p=&v;
  cout<<conf.v; 
}
#316
17:13, 4 дек 2021

samrrr

В целом неплохо, но это в другую сторону и там было Foo* и intValue.

#317
17:14, 4 дек 2021

0iStalker
> А можно изначально был сделать так, чтобы не наступать на такие детские грабли?
Можно. Программируй на C++, в нём подобное скомпилить гораздо труднее.

#318
17:18, 4 дек 2021

Ghost2
> В целом неплохо, но это в другую сторону и там было Foo* и intValue.
указатель в инт может и не влезть. И в обратную сторону тоже самое будет.

{
  int v=42;
  conv conv1;
  conv1.p=&v;
  cout<<conv1.v;
  conv conv2;
  conv conv2.v=conv1.v;
  cout<<*conv2.p; 
}
#319
18:50, 4 дек 2021

samrrr

> указатель в инт может и не влезть
В intptr_t должен влезть.

> И в обратную сторону тоже самое будет.
Дело не в этом, а конкретно в Foo. Ведь дальше у тебя два варианта:
1. Под каждое такое приведение иметь собственный union1
2. Из void* в Foo* тебе нужно будет кастовать при помощи reinterpret

И все это ради того-же нарушения strict aliasing (читай UB).

Давайте уж тогда memcpy/memmove использовать. Ведь компилятор умный, он поймёт, что функцию вызывать не нужно. Плохо только тем, что с литералами работать не будет.

1 Ещё можно разбавить вариантом 1.1, когда conv это шаблон. Специально для тех, кому во втором триместре, вместо классической музыки, мама ставила Александреску «Избранное».

#320
18:53, 4 дек 2021

0iStalker
> счастливой отладки

Foo* p = new Foo;
Foo* q = p;
delete p;

И вам не унывать.

#321
19:02, 4 дек 2021

> Foo* foo = reinterpret_cast<Foo*>(intValue);
> Других способов привести число к указателю в С++ нет (ну, кроме C-style каста).
> юнионы
Эээ, memcpy(&foo,&intValue,sizeof(foo)), std::bit_cast<Foo*>(intValue)?
Напомню про uintptr_t, и что type-punning с помощью unions - UB в C++.

#322
20:01, 4 дек 2021

Имбирная Ведьмочка
> И вам не унывать.
Ты нарушил несколько правил CORE GUIDELINES.

-Не юзать new просто так.
-Не юзать delete просто так.
-Не использовать owning-raw.

Если ты это делаешь, это как unsafe прописать в каком-нибуть C#. Всё на свой страх и риск.

#323
20:11, 4 дек 2021

FordPerfect
> и что type-punning с помощью unions - UB в C++.
У меня работало и ещё ни разу не баговало.
Шо, windows.h можно отправлять в топку? Работать уже перестал?
GCC со своим алиазом пусть идёт лесом, что по MSVC?

#324
20:22, 4 дек 2021

Ghost2
> 1. Под каждое такое приведение иметь собственный union1
> 2. Из void* в Foo* тебе нужно будет кастовать при помощи reinterpret
Я обмажу это дело темплейтами, модулями и концептами и не надо будет ни 1 ни 2.

> strict aliasing
Законтрю эту муть:
-fno-strict-aliasing

> Давайте уж тогда memcpy/memmove использовать. Ведь компилятор умный, он поймёт,
> что функцию вызывать не нужно. Плохо только тем, что с литералами работать не
> будет.
Не, надо memcpy_s юзать. Он получше чем дефолтный сишный.

#325
22:35, 4 дек 2021

0iStalker
> class SomeClass(object):
>     foo = 0;
>     def method1(self, x):
>         self.fu = 1;

map<string, int> some_map = {{"foo", 0}};

void method1(const map<string, int>& self) {
    self["fu"] = 1;     // счастливой отладки
}

upd: капец ещё и текста в 3 раза больше набивать с руки чтобы то же самое получить

#326
22:39, 4 дек 2021

Nomad
> void method1(const map<string, int>& self) {
> self["fu"] = 1; // счастливой отладки
> }

Садись, двойка.

В С++ это было бы вот так

private:
int foo=0;

public:

void foo(int x)
{
  fu = 1;  //  кодер, ты дурак  еггог ин зис лайн
}
#327
22:42, 4 дек 2021

>вы нипанимаете ета другое!(

> В С++ это было бы вот так
нет, в с++ это именно что std::map<string, shared_ptr<PyObject>>

#328
22:44, 4 дек 2021

Nomad
> > ы нипанимаете ета другое!(

Это то самое!  В С++/C#/Java... даже в бейсике - нельзя скомпилировать программу с банальной опечаткой/синтаксической ошибкой, в пайтоне можно... страдай.

#329
22:46, 4 дек 2021

0iStalker
> в пайтоне можно...
> скомпилировать программу
Изображение

Страницы: 118 19 20 21 22 23 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.