- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
struct i
{
virtual void g() = 0;
};
struct c:i
{
virtual void g() {}
};
struct ic
{
virtual void f(const std::vector<std::shared_ptr<i>>& a) = 0;
};
struct tc:ic
{
virtual void f(const std::vector<std::shared_ptr<i>>& a)
{
for(auto&& k: a) k->g();
}
};
int main() {
vector<shared_ptr<c>> k;
tc a;
a.f(k);
cout<<"ok"<<endl;
return 0;
}
LispGovno 07.09.2016 22:07 # −8
bagridze 07.09.2016 22:19 # −8
kurwa 07.09.2016 22:24 # −9
Тогда и слов таких не знали наверное (я вот и сейчас не знаю).
kurwa 07.09.2016 22:33 # −8
Soul_re@ver 08.09.2016 09:34 # −8
LispGovno 08.09.2016 10:00 # −8
Soul_re@ver 08.09.2016 10:42 # −7
Вообще, в реальном коде, я уверен что было что-то вроде такого: http://coliru.stacked-crooked.com/a/3e0aec08a554a4bf
Но так как предназначение кода не ясно и теоретически потомок может не хотеть там цикла, сделаем по другому. Так как тут уже shared_ptr и интерфейсы с виртуальными функциями, то на пирфоманс нам насрать.
Получается так: http://coliru.stacked-crooked.com/a/b1db9770b8f33cc0
LispGovno 08.09.2016 10:59 # −8
А вот первый - плохо. Разбомбил виртуальные функции, тут может и не важно, но где-то может быть важно
gost 08.09.2016 09:43 # −7
https://ideone.com/55z8Hz
LispGovno 08.09.2016 09:59 # −8
Xom94ok 08.09.2016 13:15 # −8
http://ideone.com/rT4ttC
ну, да ладно, у меня есть варик потупей
http://ideone.com/RqCxfU
upd: а, бля, уже запостили аналогичное
CTEPTOP 08.09.2016 13:17 # −64
kurwa-nextgen 08.09.2016 16:12 # −8
laMer007 08.09.2016 18:31 # −8
Копирование стопитсот элементов вектора? ну хрензнает
Soul_re@ver 08.09.2016 18:44 # −8
Dummy00001 08.09.2016 22:58 # −8
да, было бы приятно если бы работало. но с другой стороны, у меня мало сочувствия к клепателям пяти-этажных темплейтов и прочего. или как говорили классики: Inside every large problem, there is a small problem trying to get out.
Dummy00001 08.09.2016 23:03 # −8
bagor 09.09.2016 00:12 # −64
LispGovno 09.09.2016 00:56 # −8
Плохо. Хочу хранить в майне мост дерайвед потомка c. Мне доступ к его шаблонным методам нужен
Dummy00001 09.09.2016 01:13 # −8
LispGovno 09.09.2016 02:11 # −8
ага. а я видел как люди гвозди феном забивали
Bobik 09.09.2016 00:31 # −9
guestinho 09.09.2016 00:42 # −8
> хавает vector/list/deque/
Во-первых, какой это эррей, если хавает список. Во-вторых, все варианты не предусмотришь. Есть, например, еще boost.containers и boost.intrusive, ты в курсе? В-третьих, это не перфомансно.
LispGovno 09.09.2016 01:00 # −8
да написан он давно. boost::any_range, но это все в итоге костыли и от отсутствия нормальной поддержки в крестах полиморфизма не спасает
bagor 09.09.2016 01:11 # −64
guest 09.09.2016 01:12 # −8
Dummy00001 09.09.2016 01:21 # −8
LispGovno 09.09.2016 02:14 # −8
как и всегда делают крестовики: нет в языке, значит оно не нужно. Примерно это меня ждет.
А так то реализации ко\контр в крестах нет и вменяемую на базе шаблонов сделать проблематично. Генерики бы помогли, но их в кресты никогда не завезут
bagor 09.09.2016 02:17 # −64
guest 09.09.2016 02:31 # −8
LispGovno 09.09.2016 02:54 # −8
Ну можно так например. Как видишь компилируется без всяких преобразований. Полиморфизм есть в языке
guest 09.09.2016 03:10 # −8
bagor 09.09.2016 03:23 # −64
Dummy00001 09.09.2016 02:52 # −9
в крестах они как бы уже "есть": список указателей на интерфейсы + dynamic_cast( + опционально throw если что не то). потому что генерики именно это и реализуют, и именно так себя ведут. но бля dynamic_cast он же как goto: его религия не позволяет...
guest 10.09.2016 00:39 # −8
guest 10.09.2016 00:41 # −8
LispGovno 10.09.2016 03:22 # −9
guest 10.09.2016 03:30 # −9
guest 10.09.2016 03:41 # −9
barop 11.09.2016 00:38 # −10
Аллокации, векторы, поинтеры какие-то.
Вот потому всё больше людей выбирает PHP. Там вообще ничего знать не надо. Бери себе код с интернета, да копируй
bagor 11.09.2016 00:40 # −65
Porosjenko 11.09.2016 18:28 # −9
guestinho 11.09.2016 18:30 # −9
они любовники
Porosjenko 11.09.2016 18:31 # −9
dxd 12.09.2016 12:47 # −9
bagor 12.09.2016 12:50 # −64
Ид аль-Адъхьа мубарак!
g2827285 12.09.2016 10:49 # −7
http://coliru.stacked-crooked.com/a/f869a306c93fbf56
Soul_re@ver 12.09.2016 11:13 # −7
В добавок нельзя иметь контейнер с указателями на абстрактный интерфейс: каждый "интерфейс" на самом деле свой класс.
В общем, если архитектуру приложения разрабатывал жабист, то так не покатит.
g2827285 12.09.2016 14:28 # −7
Да, это так, в точке инстанцирования компилятор должен знать конкретный передаваемый тип. Другое дело, что часто все уже известно на этапе компиляции и виртуальные функции кроме как оверхеда ничего не дадут.
>> В добавок нельзя иметь контейнер с указателями на абстрактный интерфейс: каждый "интерфейс" на самом деле свой класс.
Тут вы неправы, вот пример: http://coliru.stacked-crooked.com/a/7bca0150ba91a374
Объявлен вектор указателей на абстрактный класс, добавляются элементы разных типов, узнаваемые в рун-тайме. Или что-то другое имелось в виду?
В общем случае да, для абстрактной архитектуры в вакууме не подойдет, но в некоторых случаях очень даже, учитывая перформанс. Из минусов - раздутый бинарник за счет инстанцирования классов для всех возможных входных типов.
kurwa-nextgen 12.09.2016 14:42 # −7
Еще один минус в том, что это нечитаемая параша.
g2827285 12.09.2016 14:47 # −8
Soul_re@ver 12.09.2016 14:43 # −8
g2827285 12.09.2016 15:00 # −8
kurwa-nextgen 12.09.2016 14:46 # −7
bormand 12.09.2016 18:02 # −8
LispGovno 24.09.2016 14:42 # −8
из минусов это будет компилятся полчаса на каждый спп фаел
блин. меня опередили...
нахуй так жить. лучше сразу вдоль лучше сразу перебраться на другой язык.
Борми, а что скажешь тут про раст? он как разрулит эту проблему? никак же?
guest 24.09.2016 16:16 # −7
kurwa 12.09.2016 11:42 # −8
ASD_77 21.03.2017 22:36 # −8
Береш код на С# из поста
http://ideone.com/PNIH9b
запускаеш тулзу от сюдава https://github.com/ASDAlexander77/cs2cpp и все. Нихрена делать не нада
barop 22.03.2017 00:27 # −8
inkanus-gray 22.03.2017 00:44 # −8
Пример из http://ideone.com/PNIH9b сконвертировался лишь с явным приведением типа: вместо
При этом компилятор (как родной от фреймворка для C# 5, так и от MSBuild 14.0) спокойно принимает исходник без явного приведения типа.
ASD_77 22.03.2017 11:46 # −8
guest 10.04.2017 23:59 # −29
Psionic 12.04.2017 11:51 # 0
kipar 12.04.2017 12:08 # +15
Psionic 12.04.2017 13:38 # 0
barop 12.04.2017 15:03 # −30
barop 12.04.2017 13:33 # −29
roman-kashitsyn 12.04.2017 13:35 # 0
ASD_77 12.04.2017 14:39 # 0
cykablyad 12.04.2017 14:56 # −30
ГОВНО
cykablyad 12.04.2017 14:56 # −30
barop 12.04.2017 15:04 # −30
1024-- 12.04.2017 15:20 # 0
Кстати, где nackaJIb?
barop 12.04.2017 15:21 # −29
1024-- 12.04.2017 15:24 # +1
cykablyad 12.04.2017 15:39 # −29
barop 12.04.2017 20:17 # −30
ах
cykablyad 12.04.2017 20:18 # −13
initgraph(gd, gm, '');
barop 12.04.2017 20:19 # −28
cykablyad 12.04.2017 20:22 # −14
cykablyad 12.04.2017 20:24 # −11
Я (и Инканус) кому-то из спамеров понравился
barop 12.04.2017 20:32 # −29
Дело было правда на си, но сути это не меняет. Асм мне был почти не нужен: у меня была запись в память (через присваивание значения указателю), были API для I/O и для INT, причем послднему можно было передать структуру со значниями регистров)
cykablyad 12.04.2017 20:33 # −15
barop 12.04.2017 20:35 # −29
у борланда для поскаля и сей были совершенно одинаковые API для всего практически
ну если что-то можно было в турбо си то можно было и в турбо паскале наверняка
ps: тем паче что прерывания (DOS, BIOS) с передачей параметров через регистры, IO (железа) и писяние в память (того же самого железа) это были три главные API во времена ДОСа
Потому доступ к ним был даже из QBASIC, например
И уж конечно он был из промышленных компиляторов
Psionic 12.04.2017 19:13 # 0
huesto 12.04.2017 19:17 # −30
inkanus-gray 12.04.2017 20:22 # +15
Sim_salapim 12.04.2017 20:24 # 0
О достойнейший, не поможете ли мне, старому джинну, наверстать хронологию? Что с капчей?
cykablyad 12.04.2017 20:25 # −14
На деле, антигейтом она обходится все так же как два пальца обоссать
Sim_salapim 12.04.2017 20:35 # 0
Вот мой друг Волька такого никогда себе не позволял.
cykablyad 12.04.2017 20:38 # −13
Sim_salapim 12.04.2017 20:43 # 0
Ох, как мне было хорошо с моим Волькой... Он был пионером, прилежным, в галстучке. Сколько же лет назад это было...
Мне грустно от мысли, что от моего друга, пожалуй, и костей не осталось...
cykablyad 12.04.2017 20:45 # −14
barop 12.04.2017 20:45 # −29
Sim_salapim 12.04.2017 20:48 # 0
Наверно он уже старенький, а я помню его совсем маленьким мальчиком, в тщательно выглаженной форме.
cykablyad 12.04.2017 20:49 # −14
Sim_salapim 12.04.2017 20:51 # 0
О, мой бедный Волька!..
AntiUeban 12.04.2017 20:56 # −10
p,s, Капча сейчас - shzk... ;(
http://s011.radikal.ru/i318/1704/f9/8201507957e9.png
cykablyad 12.04.2017 19:20 # −29
Я не поскалист, я не знаю
AntiSpam 12.04.2017 19:59 # −11
inkanus-gray 12.04.2017 20:24 # +15
Psionic 12.04.2017 23:11 # 0
cykablyad 12.04.2017 20:27 # −15
CrashTesterAnusov 12.04.2017 22:51 # −11
inkanus-gray 12.04.2017 20:28 # +15
http://www.standardpascal.org/compiler.html
GPC и FPC могут работать в режиме, максимально совместимом со стандартным Паскалем, но это всё равно не то.
Значит, нужно смотреть, что умеет P5.
А ISO/IEC 10206:1990 Extended Pascal будем считать чистым Паскалем или нет? Это уже не Standard Pascal, но ещё не Object Pascal (TP/Delphi).
cykablyad 12.04.2017 20:32 # −15