http://pastebin.com/9SuLTgfK
W jaki sposób stworzyć konstruktor obiektu B klasy A?
Obiekt B istnieje w każdej instancji klasy A.
Owszem, i o to chodzi. Kiedy tworzony jest obiekt klasy A, najpierw tworzone są wszystkie zmienne, obiekty wewnętrzne, przygotowywana pamięć, etc. I właśnie - chciałbym, żeby na etapie tworzenia obiektu B wykonywał się jego konstruktor domyślny, który jednak robi coś sensownego. Mógłbym nazwać klasę i już. Ale zastanawiam się, czy bez tego jest to możliwe.
Nie można zdefiniować jawnie konstruktora dla klasy anonimowej. Podlinkowałbym na to odpowiednią prafkę z standardu ale mi się nie chce ; p
W sumie dlaczego nie mogliby tego naprawić w kolejnej wersji języka?
@up lol a jak miałby wyglądać taki nienazwany, zdefiniowany konstruktor? No.... właśnie nijak. Bingo, szach mat, dziękuję dobranoc.
A jak miałaby wyglądać nazwa "anonimowej" funkcji? Nijak, ale wymyślili. Takie konstruktory też mogliby wymyśleć chociażby jako
() {...}
@up czyli chciałbyś użyć lambdy do zdefiniowania konstruktora? No może zamiast klasy anonimowej machnij tam lambdę?
Nie rozumiesz mojej wypowiedzi. Twierdzę, że do standardu mogłyby zostać dorzucone konstruktory klasy anonimowej. Przykład bardziej realny: co jeśli w takiej anonimowej klasie chcielibyśmy tworzyć obiekty operatorem new[]. Co jeśli ta anonimowa klasa miałaby być listą. Nie jest to możliwe do zrealizowania, jednak dodając konstruktory i destruktory klasy anonimowej - jak najbardziej. I jak już pisałem, składnia mogłaby wyglądać chociażby tak:
http://pastebin.com/yJN4j6Q6
Proste pytanie - po co tak skoro można nazwać tę klasę? Jeśli klasa jest trywialna może być anonimowa. W innym przypadku należy ją nazwać. Nie jest zasada jakiegoś języka, tylko raczej ogólna zasada, która dotyczy wielu języków.
To prawda, ale równie dobrze mogłoby się powiedzieć, że takie konstruktory powinny istnieć - bo dlaczego nie? Bo nie mają nazwy? A lambdy?
W każdym razie - dzięki za odpowiedź.
A jak według Ciebie ma się lambda do konstruktora? Co dalej, lambda operator dodawania?
Zawsze możesz złożyć proposal ale imho nie ma szans żeby to przeszło, bo to przede wszystkim nie jest w żaden sposób użyteczne.
Poza tym ciekawe jak by to miało działać dla konstruktorów konwertujących i operatorów konwersji. Masz jakiś pomysł? Skoro nie ma nazwanego typu dla tej klasy to co miało by się dziać? Magia? Jakiś implicit cast jak dla lambdy czy co?