[Visual C++]cannot declare default arguments


(Masterslynx) #1

"cannot declare default arguments for member functions of a managed type or generic functions"

Nowa niespodzianka

Jak i gdzie.

funkcja void w nowej klasie, w osobnym pliku

void clear(ListBox ^ItemSelect = ItemSelect)

Krzyczy gdy dodam mu parametr domyślny i nie bardzo wiem jak to poprawić. Nawet nie mam pomysłów , więc w sumie nic więcej nie napiszę. Po prostu coś takiego dostałem. A muszę mieć je na default, bo tych argumentów jest całkiem sporo i w kodzie zrobiłby się niezły syf, przy każdorazowym użyciu takiej funkcji. Zresztą, nieistotne.

Jak ktoś ma jakiś pomysł to czekam.


(Drobok) #2

A może by tak nie podawać na sztywno argumentów tylko sprawdzać ich ilość ?? :stuck_out_tongue:


(Masterslynx) #3

Nie bardzo rozumiem. To są i tak argumenty domyślne, jeśli nie zostaną podane, to wtedy skorzysta (jak jest oczywiste) z danych podanych jako domyślne. Nie bardzo rozumiem o co chodzi. Poza tym, program wykorzystujący tą funkcję (najprawdopodobniej) zawsze będzie podawał te same argumenty do funkcji.

Coś tam wygrzebałem w necie, ale jedynie pytania. 2 czy 3 osoby miały takie same pytanie i żadnej odpowiedzi :confused:


(Fiołek) #4

C++/CLI nie obsługuje parametrów domyślnych, jak błąd wskazuje.


(Masterslynx) #5

Jedyne co mogę powiedzieć to "yyyy..eeee.." Jeśli to prawda to nieźle mnie zaskoczyłeś. A nie można tego jakoś obejść ? Zastąpić czymś ?


(Fiołek) #6

Przeładowania metod(wiele metod o tej samej nazwie z różną ilością/różnymi parametrami). Przerzuć się na jakiś sensowniejszy język, a nie bawisz się w C++/CLI. :wink:


(Masterslynx) #7

Co masz na myśli mówiąc sensowniejszy ? Wiesz, ja przespałem jakieś ostatnie 3 lata, więc nie wiem co się działo w świecie komputerów ;p

A przeładowywania metod to też nie, efekt będzie nie ten co potrzebny.

I jeszcze coś, właśnie w tej chwili doszło to od razu zapytam. Jak mam się odnieść do całej formy (standardowo Form1) ? podać ją jako argument. Jak wrzucę to jako "Form ^Form1" a argument funkcji to pójdzie przy kompilacji, ale przy użyciu funkcji i wpisaniu nazwy formy jako argumentu (Form1) wyrzuca błąd "illegal use of this type as an expression". tak, wiem, że to illegal, pytanie tylko jak mu to podać ? Chcę by funkcja zmieniła tekst w oknie (wartość Text formy). Jakoś nie mam pomysłu, bo to nie konkretny obiekt tylko cała klasa :confused:


Dobra, już mam ;p Ja to czasami jestem;p Zapominam, że jest to coś bardzo fajnego, jak this :wink:


(Fiołek) #8

C#, VB.NET, F#, ogólnie wszystko(nawet PHP jest lepsze :P) tylko nie C++/CLI.


(Masterslynx) #9

Wszystko co wymieniłeś to pierd*****, jedyne co mnie ciekawi to F#. Pierwszy raz o tym słyszę, to jakaś nowość. O każdym znanym języku słyszałem cokolwiek, miałem styczność choćby w małym stopniu, a F# zobaczyłem pierwszy raz gdy zainstalowałem Visual 2010, wtedy się zastanawiałem co to jest. A teraz jak mówisz, że to oddzielny język to muszę zobaczyć, może to coś ciekawego.

No, może nie każdy język, bo trochę ich było ;p Ale kto z was miał styczność, np. z Clipperem ? A ilu z was siedziało w assemblerze ? no właśnie :wink:


(somekind) #10

F# to OCaml na .NET, całkiem inna bajka niż reszta. A, że języki funkcyjne są mniej popularne, więc nic dziwnego, że rzadko się o nich słyszy. Zwłaszcza, że duża część ludzi myśli, że programowanie to tylko C++ i trudno im w ogóle zrozumieć, że są inne, bardziej eleganckie i przejrzyste języki. Zwłaszcza, że ludzie często nie rozumieją, że są inne paradygmaty programowania niż imperatywny.

Nie bardzo rozumiem co określasz przez "pierd*****". Taki np. C# 4.0 obsługuje argumenty domyślne, więc mógłby rozwiązać Twój problem.

C++/CLI powstał w celu łatwiejszej integracji istniejącego kodu C++ pod platformę .NET. Używanie go do czego innego zakrawa chyba na masochizm, bo jest brzydki i udziwniony.


(Masterslynx) #11

"Używanie go do czego innego zakrawa chyba na masochizm, bo jest brzydki i udziwniony." - chyba już rozumiem o co ci chodzi ;p Ale jeszcze go nie znam z tej strony. Muszę nad nim trochę popracować. Piszę parę programów, ale widzę, że... bardziej to środowisko visual jest trochę ograniczone :confused: Przynajmniej jak dla mnie. Brakuje mi tu sporej liczby elementów. Nie mówię, że język nie wyrabia, bo napisać to można, ale środowisko visuala nie przedstawia możliwości c++. No mniejsza, jak coś to zerknę. I zerknę też na te nowe języki. Nie wiem co to, ale są powrotem do przeszłości, że tak powiem, jakieś języki logiczne czy coś. Nie pamiętam, muszę poszukać. Ale ok, dzięki za info. Aktualnie i tak uczę się jeszcze Javy, bo serwer Lineage 2 jest pisany w Javie, więc żeby modyfikować to muszę trochę rozgryźć ten język; )


(Fiołek) #12

C++ ma duże "możliwości", ale jest tak stary i przez to źle zaprojektowany, że używanie go tam gdzie nie ma konieczności to masochizm :stuck_out_tongue:

Visual C++ jest jednym z najbardziej rozbudowanych IDE, lecz powoli przestaje wspierać C++/CLI, którego używasz. Jeśli chcesz korzystać z wszystkich jego możliwości przesiądź się na natywny C++.

Lol? Jeśli nie masz zielonego pojęcia o tych językach to ich nie oceniaj :wink: Języki funkcyjne(np. F# i OCaml) nie są jakimś nowym wymysłem, ale nie można o nich powiedzieć, że są "powrotem do przeszłości"... po prostu inaczej się w nich programuje.


(Masterslynx) #13

Mówiąc "powrotem do przeszłości" miałem na myśli, że te był pierwszymi językami, potem zaczęły wchodzić pascale, c itd, a teraz znowu "powrót do korzeni". Tu się na tym nie znam, jedynie to co usłyszałem, więc wypowiadać się nie będę.