Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wywoływanie funkcji ze zmienną nazwą

Ostatnio zmodyfikowano 2011-05-27 14:26
Autor Wiadomość
GoldWolf
Temat założony przez niniejszego użytkownika
Wywoływanie funkcji ze zmienną nazwą
» 2011-05-27 09:32:43
Taki przykład jakby to ugryźć:

C/C++
while( straznik > 0 ) {
   
    HANDLE NazwaWatku =( HANDLE ) _beginthread( ThreadProc1, 0, NULL );
    straznik -= 1;
    LPSTR NazwaWatku =( "Klasa Okienka" + straznik );
}

Mam błąd - 'NazwaWatku' : redefinition; different basic types
P-33513
malan
» 2011-05-27 10:15:41
HANDLE NazwaWatku
,
LPSTR NazwaWatku
.
P-33514
GoldWolf
Temat założony przez niniejszego użytkownika
» 2011-05-27 10:31:03
Chyba nie jest mi to potrzebne, ostatecznie tak to wygląda.

C/C++
LPSTR NazwaWatku =( "Klasa Okienka" + straznik );
straznik -= 1;
while( straznik > 0 ) {
   
    HANDLE NazwaWatku =( HANDLE ) _beginthread( ThreadProc1, 0, NULL );
    straznik -= 1;
    // LPSTR NazwaWatku = ("Klasa Okienka" + straznik);
}

Chciałem, by wątki się inaczej nazywały, ale ogólnie nie jest to potrzebne. Jednak czy można to jakoś zrobić nie stosując stałych? Czyli nazwy wątków będą dynamicznie nadawane.
To takie pytanie retoryczne, bo wszystko można, ale jest jakiś prostu sposób na to?
P-33515
malan
» 2011-05-27 13:05:01
Mi chodziło o to, że zadeklarowałeś dwie zmienne o tej samej nazwie. Dlatego dostałeś
redefinition
. W C++ nie da się dynamicznie przydzielić zmiennej jej nazwy. Musi ona być znana podczas kompilacji.
P-33523
DejaVu
» 2011-05-27 14:03:59
Druga sprawa to sklejanie łańcuchów znaków - nie możesz tak robić. Musisz użyć funkcji C do sklejania tekstu, np.
Dokumentacja
strcatScala dwa łańcuchy znaków w jeden. (funkcja)
P-33526
GoldWolf
Temat założony przez niniejszego użytkownika
» 2011-05-27 14:26:00
Kurde miałem poprawić ostatecznie będzie to wyglądać tak, ponieważ nie będę nadawać inną nazwę, tylko tworzył kolejne wątki o tej samej nazwie, nie wymaga by było inaczej.

C/C++
straznik -= 1;
while( straznik > 0 ) {
   
    HANDLE hThread1 =( HANDLE ) _beginthread( ThreadProc1, 0, NULL );
    straznik -= 1;
   
}

Dzięki można zamknąć!
P-33528
« 1 »
  Strona 1 z 1