Member 14925633 Ответов: 1

Ошибка: не удалось преобразовать ‘(std::string*)(& sol)’ из ‘std::string* {aka std::basic_string*}’ в ‘std::string {aka std::basic_string}’


ошибка: не удалось преобразовать ‘(std::string*)(& sol)’ из ‘std::string* {aka std::basic_string*}’ в ‘std::string {aka std::basic_string}’

Что я уже пробовал:

#include<limits> 
#include<string>
#include<iostream>
using namespace std;
int returnPermutations(string input, string output[])
{ 
    if(input.length() == 0)
    { 
        output[0] = ""; 
        return 1; 
    } 
    string smallOutput[10000]; 
    int smallSize = returnPermutations(input.substr(1), smallOutput); 
    int k = 0; 
    for(int i = 0; i < smallSize; i++)
    { 
        for(int j = 0; j <=smallOutput[i].length(); j++)
        { 
            output[k++] = smallOutput[i].substr(0,j) + input[0] + smallOutput[i].substr(j); 
        } 
    } 
    return k; 
}
string getStr(string s)
{
    int l;
    l=s.length();
    string r="";
    for(int i=0;i<l;i++)
    {
       if(s[i]!=' ')
         r=r+s[i];        
    }
    return r;
}
int main()
 {
    string sol[10000];
     string s;
     getline(cin,s);
    sol[10000]=getStr(s);
   string output[10000];
   int count = returnPermutations(sol,output);
    for(int i = 0; i < count && i <10000; i++){
        cout << output[i] << endl;
    }
	return 0;
}

KarstenK

Я думаю, что ваш вызов функции recursice имеет некоторые недостатки. Я бы использовал const int для 10000 и начал отлаживать его с помощью 3. ;-)

1 Ответов

Рейтинг:
9

Greg Utas

Во первых, sol[10000] = getStr(s) должен рухнуть, потому что максимальный легальный индекс для sol массив равен 9999 (его 10000 индексов равны от 0 до 9999).

int count = returnPermutations(sol, output) вызывает ли эта функция с помощью sol, который является массивом. Способ, которым C++ делает это, состоит в том, чтобы передать a указатель к первому элементу массива, а именно указателю на строку sol[0] Затем функция должна знать, что она действительно получает аргумент массива. Но это означает, что его первый аргумент должен быть string* input, нет string input Это и есть причина ошибки компилятора. Но вы также призываете returnPermutations с input.substr(1), который является фактической строкой, поэтому вам придется решить, как выровнять оба использования.