Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Exebiche
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
#1

Переобъявить функции - C++

09.07.2013, 11:52. Просмотров 360. Ответов 10
Метки нет (Все метки)

Здравствуйте, есть функция в хидере написано
C++
1
 int do_ls(char*, char *);
в мэйне написано
C++
1
int do_ls(char *dirname, char *fileName)
как это переобъявить эти функции используя string
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2013, 11:52     Переобъявить функции
Посмотрите здесь:

C++ определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
C++ C++ Функции Массив (переписать в виде функции)
C++ Не работают функции <math.h> в методе (функции-члене)
Применение переменных одной функции в другой функции C++
C++ Работа функции qsort - объяснить работу функции
C++ Перевести код из функции в шаблоны функции
C++ С++ - map с указателями на функции и функции в классе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
09.07.2013, 11:53     Переобъявить функции #2
в общем случае никак.
В некоторых случаях можно передавать в них string::c_str(), но только если
C++
1
int do_ls(const char*, const char *);
не?
Exebiche
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
09.07.2013, 11:56  [ТС]     Переобъявить функции #3
Но препод мне говорил и показал что должно быть что то похожее на
C++
1
int do_ls(const string &sDirName, const string &sFileName)
это написано в мэйне
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
09.07.2013, 11:58     Переобъявить функции #4
Может, тогда перегрузить, а не переобъявить?
Exebiche
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
09.07.2013, 12:00  [ТС]     Переобъявить функции #5
Может перегрузить, мне нужно что бы вместо использования char использовать string
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.07.2013, 12:07     Переобъявить функции #6
Цитата Сообщение от Exebiche Посмотреть сообщение
Может перегрузить, мне нужно что бы вместо использования char использовать string
Вы, по-моему, запутались. Оставьте сигнатуру в покое. Или меняйте и в хедере, и в сишнике.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
09.07.2013, 12:21     Переобъявить функции #7
Цитата Сообщение от Exebiche Посмотреть сообщение
Но препод мне говорил и показал что должно быть что то похожее на
именно поэтому я пишу, что в ОБЩЕМ случае никак.
Чтобы написать функцию int do_ls(const string &sDirName, const string &sFileName)
Надо взять код старой функции и тщательно проверить и переписать. Как минимум, новая функция принимает строковые константы, а оригинальная - нет.
Откуда я знаю, что было в теле оригинальной функции? может там эти строки таки изменялись?!?!
Exebiche
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
09.07.2013, 12:26  [ТС]     Переобъявить функции #8
Забыл уточнить что, мне он также объяснил что там надо будет дописывать с._str(), и изменять некоторые значения что я удачно только что сделал осталось кажется последняя проблема не могу понять как исправить эту ошибку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
int main(int argc, char *argv[])
{
    ShowCopyright(); // функция вывода прав копирайта
 
    if(argc == 1)       // если не введена команда то выводим помощь
    {
        cout << "Введена неизвестная команда, прочти помощь или введи команду help" << endl;
        ShowHelp(); /// функция вывода помощи
 
        return 0;
    }
 
string sArg(argv[1]);
 
    if(!sArg.compare("help")) /// если введена команда help то выводим помощь
    {
        ShowHelp(); /// функция вывода помощи
 
        return 0;
    }
 
    if(!sArg.compare("dir")) ///при вводе команды dir сканируем ключи  отображения
     {
        for (int i = 2; i < argc; i++) /// считываем  для команды dir ключи
        {
            string sArg(argv[i]);
 
 
            if(!sArg.compare("/all")) // если введен ключ /all отображаем всю информацию об каталоге такую как права доступа, количество ссылок на файл, имя владельца, имя группы, размер, время последнего редактирования
            {
                all = "/all";
                blSeeName = true;  /// не отображать им файлов так как оно отобразится в ключе /all
            }
 
 
            if(!sArg.compare("/p")) /// если введен ключ /p то отображаем права доступа
            {
                p = argv[i];
            }
 
            if(!sArg.compare("/s")) /// если введен ключ /s то отображаем количество ссылок на файл
            {
                s = argv[i];
            }
 
            if(!sArg.compare("/v")) /// если введен ключ /v то отображаем имя владельца
            {
                v=argv[i];
            }
 
            if(!sArg.compare("/g")) /// если введен ключ /g то отображаем имя группы
                g=argv[i];
 
            if(!sArg.compare("/r")) /// если введен ключ /r то отображаем размер ф
                r=argv[i];
 
            if(!sArg.compare("/t")) ///если введен ключ /t то отображаем время последнего редактирования
                t=argv[i];
 
        }
     }
 
 
    if (argc != 1) // если заданы параметры для командной строки то считываем все файлы в каталоге
    {
        while (--argc)
        {
            cout << *++argv << endl;
            do_ls(*argv, (string*)""); //выполнение функции на проверку существования файлов
        }
    }
 
    return 0;
}
/data_file/main.cpp||In function ‘int main(int, char**)’:|
/data_file/main.cpp|112|error: conversion from ‘std::string*’ to non-scalar type ‘std::string’ requested|
||=== Build finished: 1 errors, 0 warnings ===|

ошибку указывает на строку 69
zenw
154 / 110 / 3
Регистрация: 12.06.2013
Сообщений: 168
09.07.2013, 12:30     Переобъявить функции #9
C++
1
do_ls(*argv, string());
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
09.07.2013, 12:33     Переобъявить функции #10
Если я правильно понял, вместо этого
C++
1
 do_ls(*argv, (string*)"")
так попробуй:
C++
1
 do_ls(*argv, "")
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2013, 12:36     Переобъявить функции
Еще ссылки по теме:

C++ Дружественные функции. Наследование. Перегрузка функции
Разница в работе созданной функции и основной функции C++
C++ Как переобъявить чужую функцию?
C++ Передача функции в качестве параметра функции
C++ Составить функции вычисления определённого интеграла от функции f(x)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Exebiche
0 / 0 / 0
Регистрация: 08.05.2013
Сообщений: 23
09.07.2013, 12:36  [ТС]     Переобъявить функции #11
Прошу прощения, я перепутал коды и там написано не
C++
1
do_ls(*argv, (string*)"");
, а написано
C++
1
do_ls(*argv, (char*)"");
Yandex
Объявления
09.07.2013, 12:36     Переобъявить функции
Ответ Создать тему
Опции темы

Текущее время: 16:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru