Kalkulator naukowy z wykorzystaniem ONP, konwersja System String

0

Witam,
mam za zadanie zrobić kalkulator pseudo-naukowy, który formuły ma liczyć przez zamianę na notację ONP. Prawie wszystko mam już zrobione, zostały drobne korekty i.. wyskakuje mi błąd co do konwersji z System::String do std:
1>c:\users****\documents\visual studio 2010\projects\kalkulatorr\kalkulatorr\Form1.h(1092): error C2664: 'Calc::RPN' : cannot convert parameter 1 from 'System::String ^' to 'std::string'
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Próbowałem zmieniać deklaracje na String, żeby cały czas był systemowy string, który tkwi w textBoxach w Visual C++, próbowałem konwertować poprzez coś co zwane jest marshal, ale tego nie rozumiem za bardzo i nie udało się. Od dwóch dni tkwię w tym skonwertowaniu. Prosiłbym o jakąś pomoc, poniżej wrzucam kody(wiem, że jest chaos, niestety, ale większość robiona na kopiuj wklej z poprzednika i nie była jeszcze poprawiana, żeby ładnie to wszystko wyglądało, no i pierwszy raz robię coś w środkowisku Visual C++ z oknami).

Przyciski(Form1.h):
http://ideone.com/7NBIxN

Nagłówek głównej formy(Form1.h):
http://ideone.com/R1xZJx

Zamiana do RPN(Calc.cpp):
http://ideone.com/M1nRzQ

Calc.h:
http://ideone.com/rTRLFB

Stosy(Stos.cpp):
http://ideone.com/AJjaqq

Stos.h:
http://ideone.com/xcAhT5

Kalkulator.cpp:
http://ideone.com/JxbLIw

Sam za bardzo się chyba w tym pogubiłem i już nie mam sił do tego. Za bardzo namieszałem :(
Pozdrawiam i dziękuję za wszelką pomoc.

1
> cannot convert parameter 1 from 'System::String ^' to 'std::string'

Dereferencja


EDIT:</p>

próbowałem konwertować poprzez coś co zwane jest marshal

http://stackoverflow.com/questions/946813/c-cli-converting-from-systemstring-to-stdstring

#include <stdlib.h>
#include <string.h>
#include <msclr\marshal_cppstd.h>
//..
using namespace msclr::interop;
//..
System::String^ clrString = (TextoDeBoton);
std::string stdString = marshal_as<std::string>(clrString); //String^ to std
//System::String^ myString = marshal_as<System::String^>(MyBasicStirng); //std to String^
prueba.CopyInfo(stdString); //MyMethod
//..
//Where: String^ = TextoDeBoton;
//and stdString is a "normal" string;
0
spartanPAGE napisał(a):

cannot convert parameter 1 from 'System::String ^' to 'std::string'

Dereferencja

Czy mógłbyś powiedzieć coś więcej o tym? Jak zastosować dereferencję w tym przypadku? Nie robiłem tego nigdy i niestety nie wiem..

Edit:
Dodałem:

		 System::String^ clrString = (textBox3->Text);
std::string stdString = marshal_as<std::string>(clrString); //String^ to std
//System::String^ myString = marshal_as<System::String^>(MyBasicStirng); //std to String^
//prueba.CopyInfo(stdString); //MyMethod
textBox3->Text=(Wynik.RPN(textBox3->Text)); 

oraz wszystkie biblioteki i nadal ten sam błąd. Chyba, że coś źle zastosowałem?

0

up...

0

na cholere piszesz w C++ .NET skoro nie zamierzasz korzystać z .NETowych klas? Nie możesz po prostu zamienić wszystkich std::string na String^?

0

Tak zostałem nakierowany, żeby tak właśnie robić. Próbowałem i cały czas jest ten sam błąd, jakby nic ta konwersja nie dawała. Chyba, że źle ją używam, ale wydaje mi się, że ok. Dlatego pytam tutaj, bo pogubiłem się już..

0

Temat konwersji System::String^ na std::string i odwrotnie był tu wielokrotnie, dostałeś też przykład kodu wyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1