PDA

View Full Version : [Visual C++] operatore gcnew a cosa serve?


Andy1984
18-06-2010, 11:37
Ciao a tutti, sto utilizzando da poco Visual C++ 2008 e sto analizzando un codice eistente che ha pochissimi commenti. Nel codice c'è una riga che dice: Order->Setvalue(gcnew String (StrCell.c_str()), OrderScan );

Mi potreste dire cosa significa questa linea di codice?

Ringrazio in anticipo.

tomminno
18-06-2010, 12:52
Serve per allocare gli oggetti nel managed heap di .NET.

PS Quello non è C++

dierre
18-06-2010, 12:53
[...]
PS Quello non è C++

:asd:

Andy1984
18-06-2010, 13:28
Serve per allocare gli oggetti nel managed heap di .NET.

PS Quello non è C++

è C#??

wizard1993
18-06-2010, 13:36
è C#??

no, è c++/cli ossia c++ managed
http://en.wikipedia.org/wiki/C%2B%2B/CLI

Andy1984
18-06-2010, 14:23
no, è c++/cli ossia c++ managed
http://en.wikipedia.org/wiki/C%2B%2B/CLI

Vabbè ma qui con tutte queste varianti non ci si capisce più niente...:doh:

ok ora mi è tutto più chiaro perchè non capivo molte istruzioni. Io vengo dal C classico e non ho mai programmato ad oggetti quindi mi risulta un po più complicato.

Grazie cmq

tomminno
18-06-2010, 14:43
Vabbè ma qui con tutte queste varianti non ci si capisce più niente...:doh:

ok ora mi è tutto più chiaro perchè non capivo molte istruzioni. Io vengo dal C classico e non ho mai programmato ad oggetti quindi mi risulta un po più complicato.

Grazie cmq

Quello che hai trovato te non ha niente a che vedere con il C++. Ha un nome simile (C++/CLI) e basta.
Fai conto che è come Java e Javascript, si assomigliano solo per il nome.

wizard1993
18-06-2010, 14:45
Vabbè ma qui con tutte queste varianti non ci si capisce più niente...:doh:

ok ora mi è tutto più chiaro perchè non capivo molte istruzioni. Io vengo dal C classico e non ho mai programmato ad oggetti quindi mi risulta un po più complicato.

Grazie cmq

inoltre ricordati che il che il cli ha un garbage collector dietro, questa è la più grande differenza con il c++ standard (e dal c), ossia la memoria non la gestisci manualmente.

dierre
18-06-2010, 14:52
direi pure il bytecode no?

wizard1993
18-06-2010, 15:03
direi pure il bytecode no?
senza dubbio, ma sapere che sia compilato in bytecodenon cambia il modo in cui programmi, mentre se dietro c'è un gc è profondamente diverso dal non avero. :D

dierre
18-06-2010, 15:46
senza dubbio, ma sapere che sia compilato in bytecodenon cambia il modo in cui programmi, mentre se dietro c'è un gc è profondamente diverso dal non avero. :D

tru :sisi:

marco.r
18-06-2010, 16:33
inoltre ricordati che il che il cli ha un garbage collector dietro, questa è la più grande differenza con il c++ standard (e dal c), ossia la memoria non la gestisci manualmente.

volendo si puo' usare anche un GC col c++ standard.

wizard1993
18-06-2010, 20:40
volendo si puo' usare anche un GC col c++ standard.

senza dubbio, ma mentre quello del cli è fortemente integrato con il linguaggio un boehm (solo per fare un esempio) non è lo altrettanto con il c++, e soprattutto non è obbligatorio e in genere, se scegli il c++ ponderatamente il gc è l'ultima cosa che ti serve,

Andy1984
21-06-2010, 10:09
Grazie a tutti ragazzi ora è tutto più chiaro e mi avete instradato ad una ricerca in rete sul C++/cli. Ora il prigramma che ho sottomano so come si potrebbe gestire.

Ora volevo fare un'altra domanda visto che stiamo parlando del C++/cli e penso che sia proprio una sintassi di quest'ultimo.

Ho questo pezzo di codice:

...
while(RowScan <= 3)
{
//scansione OC
while(ColScan <= 3)
{
xls_sheet.ofs(RowOffSet[RowScan],ColOffSet[ColScan]);
if(!xls_sheet.eof())
{
xls_sheet.readval(StrCell, RowOffSet[RowScan],ColOffSet[ColScan]); Controller = gcnew String(StrCell.c_str());
}
else Controller == "";
//Controller = gcnew String(StrCell.c_str());
StrCell = "";

Ora nella linea con xls_sheet.ofs(RowOffSet[RowScan],ColOffSet[ColScan]) io so che xls_sheet.ofs e l-offset per leggere in un file excel pero non ho capito il contenuto delle parentesi.
Qualcuno potrebbe spiegarmelo_

Grazie in anticipo