Я никогда не мог обернуть голову вокруг указателей, строк, символов и т. Д. Мне нужно помогите с этой ошибкой. Вот фрагмент кода ...Ошибка C2664: «Стратегия :: Интерфаз»: невозможно преобразовать параметр 2 из «char *» в «char» [] '
string H = "פטיש";
string G = "Σφυρί";
bool Interphase(int argc, char * args[]); //DLL import from Analytical.a
char * Hcopy = new char[H.length() + 1];
std::strcpy(Hcopy, H.c_str());
char * Gcopy = new char[G.length() + 1];
std::strcpy(Gcopy, G.c_str());
while (Interphase(147, Hcopy) == true || Interphase(148, Gcopy) == true)//C2664 here!
{// Do stuff...}
Пожалуйста, обратите внимание, что код изменен, чтобы отразить только ошибку.
Кроме того, как компилировать в Visual Studio 2012 Окончательной без
Warning C4566: character represented by universal-character-name '\u05E9' cannot be represented in the current code page (1252)
Спасибо.
Предупреждения полезны! Не игнорируйте их! Предупреждение, которое вы пытаетесь удалить, является полезным предупреждением: '' פטיש "' не может быть представлен как массив 'char'. Это, скорее всего, даст вам неправильные результаты. – Rakete1111
Почему вы используете указатели и C-строки? Это 2016 год, а не 1972 год! Почему бы просто не называть 'Interphase (147, & H [0])' и 'Interphase (148, & G [0])'? (Вы уверены, что аргументы 'argc' верны?) –
@LightnessRacesinOrbit Wikipedia C++: «Сначала появился \t 1983« ОК. – Downvoter