Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Подскажите что не так в этом коде


Автор: _Ghost_ 8.5.2008, 21:29
Подскажите что не так в этом коде?
вроде все компилится
Код

bool login(char* input, char* domain)
{
    Authenticator* authenticator = new Authenticator();
    int userlen = 0;
    char user[255];
    char password[255];
    char* p = input;

    if(input[0] == '#')
      // no username specified
      return false;

    try
    {
        // Get length of username
        while(p != NULL)
        {
            if(*p == '#')
              break;
            userlen++;
            p++;
        }

        // Extract username from input
        for(int i=0; i <= userlen; i++)
        {
            user[i] = input[i];
        }

        // Extract password from input
        strcpy(password, p);

        authenticator.login(user, password);
    }
    catch(...)
    {
        throw LoginException();
    }

    delete authenticator;
    return true;
}


Автор: Rififi 8.5.2008, 21:38
Подскажите что не так в этом коде?
у него плохая аура.

Автор: JackYF 8.5.2008, 22:32
Rififi, курсив - это хорошо, но есть кнопка "быстрая цитата" ;)

Цитата(_Ghost_ @  8.5.2008,  20:29 Найти цитируемый пост)
Подскажите что не так в этом коде?

Проблемы-то какие?

Автор: Ln78 9.5.2008, 09:23
Цитата(_Ghost_ @  8.5.2008,  21:29 Найти цитируемый пост)
authenticator.login(user, password);

Результат выполнения этого метода никак не важен, сам метод login возвращает всегда true - это, конечно, может быть и правильным, но несколько смущает. Более очевидные реализации вернули бы именно результат выполнения authenticator.login

Автор: mes 9.5.2008, 11:09
Цитата(Ln78 @  9.5.2008,  09:23 Найти цитируемый пост)
сам метод login возвращает всегда true 

не всегда ))
Цитата(Ln78 @  9.5.2008,  09:23 Найти цитируемый пост)

Код

    if(input[0] == '#')
      // no username specified
      return false;

 


к тому же если используется ассинхроное программирование , то результат операции сообшает лишь о том, что команда отправлена на выполнение.
а authenticator.login()  вполне вероятно, что  возврашает void -так как выдать результат "логина" он вернуть "физически" не может

Автор: Ln78 9.5.2008, 11:19
mes, первый возврат я видел, в данном случае речь не о нём (хотя цитата с этим кодом не моя smile ).
И про то, что authenticator.login обязан возвращать значение категоричных утверждений не было. Просто исходный вопрос предполагал, что в коде что-то не так. У тебя есть какие-то другие конструктивные варианты ответа на заданный вопрос?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)