Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309

Вызов функции

22.03.2013, 23:42. Показов 958. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Не могу вызвать функцию, объясните причину.

C++ (Qt)
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
template <typename T>
    void Calc_etalon (QDir & DirTxt)
    {
        //QDir DirTxt(Path);
        QVector <T> vec;
        vec.clear();
        foreach (const QString & fName, DirTxt.entryList(QStringList ("*.txt") )) //цикл по всем txt
        {
            QFile file( (DirTxt.path()+fName).toAscii() ) ;
            file.open(QIODevice::ReadWrite | QIODevice::Text); //открываем файл для чтения и записи
            while (!file.atEnd())
            {
                QByteArray line = file.readLine();
                QString str = line.data();//прочитанная строка
                vec.push_back(str.data()); //data?
            }//вектор заполнен данными из файла
 
            size_t etalon=0;
            for (size_t i=0; i<vec.size(); ++i)
            {
                etalon+=vec[i];
            }
            vec.push_back(etalon/vec.size()); //добавляем в вектор эталон
            QTextStream out(&file);
            //out << vec.last();//записываем эталон в конец файла
            out << vec[vec.size()];            
            file.close();
        }
    }
C++ (Qt)
1
2
QDir DirTxt("D://cells//");
Calc_etalon(DirTxt);
Ошибки:
..\DefineTheCell\mainwindow.cpp: In member function 'void MainWindow::on_pushButton_2_clicked()':
..\DefineTheCell\mainwindow.cpp:255:23: error: no matching function for call to 'MainWindow::Calc_etalon(QDir&)'
..\DefineTheCell\mainwindow.cpp:255:23: note: candidate is:
..\DefineTheCell\/mainwindow.h:161:10: note: template<class T> void MainWindow::Calc_etalon(QDir&)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2013, 23:42
Ответы с готовыми решениями:

Вызов функции внутри другой функции с передачей локальной переменной по ссылке
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель)
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Не работает без указателя вызов функции в функции
int AmountOfSquares(int **Array) { NumberOfSquares++; for (i = iTempTwo + 1; ((i&lt;(iTemp + SizeOfSquare)) &amp;&amp;...

6
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
22.03.2013, 23:54
для вызова нужно явно указать аргумент шаблона (не просто же так она шаблонная)
C++
1
2
3
4
5
6
7
template <typename T>
void Calc_etalon (QDir & DirTxt) {}
 
...
 
QDir DirTxt("D://cells//");
Calc_etalon<int>(DirTxt);
но похоже там дальше фигня начнется.
1
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
23.03.2013, 00:11  [ТС]
А как же мне выкрутиться тогда, если у меня куча файлов..где-то флоты, где-то size_t..перегрузить что ли?

Цитата Сообщение от Sor Посмотреть сообщение
C++ (Qt)
1
vec.push_back(str.data()); //data?
Как тут предусмотреть хотя бы 2 варианта? toInt и toFloat
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
23.03.2013, 00:23
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
написать свою шаблонную функцию преобразования из строки в тип, который в шаблонную функцию передается +
специализации для int и float.
 
template <typename T>
T MyConvertionFromString(const QString& str);
 
template <>
int MyConvertionFromString<int>(const QString& str)
{
   return str.toInt();
}
 
template <>
int MyConvertionFromString<float>(const QString& str)
{
   return str.toFloat();
}
 
 
template <typename T>
void Calc_etalon (QDir & DirTxt)
{
   ...
   vec.push_back(MyConvertionFromString<T>(str));
   ...
}
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
25.03.2013, 11:27  [ТС]
C++ (Qt)
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
template <typename T>  //шаблонные функции для конвертирования из строки
    T MyConvertionFromString(const QString& str);
 
    template <>
    int MyConvertionFromString<int>(const QString& str)
    {
       return str.toInt();
    }
 
    template <>
    float MyConvertionFromString<float>(const QString& str)
    {
       return str.toFloat();
    }
 
 
    template <typename T>
    void Calc_etalon (QDir & DirTxt)
    {
        //QDir DirTxt(Path);
        QVector <T> vec;
        vec.clear();
        foreach (const QString & fName, DirTxt.entryList(QStringList ("*.txt") )) //цикл по всем txt
        {
            QFile file( (DirTxt.path()+fName).toAscii() ) ;
            file.open(QIODevice::ReadWrite | QIODevice::Text); //открываем файл для чтения и записи
            while (!file.atEnd())
            {
                QByteArray line = file.readLine();
                QString str = line.data();//прочитанная строка
                vec.push_back(MyConvertionFromString<T>(str));
                //vec.push_back(str.toInt()); ////////////////////////// toFloat
            }//вектор заполнен данными из файла
 
            size_t etalon=0;
            for (size_t i=0; i<vec.size(); ++i)
            {
                etalon+=vec[i];
            }
            vec.push_back(etalon/vec.size()); //добавляем в вектор эталон
            QTextStream out(&file);
            out << vec.last();//записываем эталон в конец файла
            file.close();
        }
    }
не работает.
C++ (Qt)
1
2
3
4
5
6
7
..\DefineTheCell\/mainwindow.h:162:15: error: explicit specialization in non-namespace scope 'class MainWindow'
..\DefineTheCell\/mainwindow.h:163:55: error: template-id 'MyConvertionFromString<int>' in declaration of primary template
..\DefineTheCell\/mainwindow.h:168:15: error: explicit specialization in non-namespace scope 'class MainWindow'
..\DefineTheCell\/mainwindow.h:169:59: error: template-id 'MyConvertionFromString<float>' in declaration of primary template
..\DefineTheCell\/mainwindow.h:169:11: error: 'float MainWindow::MyConvertionFromString(const QString&)' cannot be overloaded
..\DefineTheCell\/mainwindow.h:163:9: error: with 'int MainWindow::MyConvertionFromString(const QString&)'
..\DefineTheCell\/mainwindow.h:176:10: error: too many template-parameter-lists
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
25.03.2013, 22:44
хз что за дела.
вот аналог компилится в студии:
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
#include <string>
#include <vector>
#include <iostream>
 
template <typename T>
T FromString(const std::string& str);
 
 
template <>
int FromString<int>(const std::string& str)
{
    std::cout << "From string to int" << std::endl;
    return 0;
}
 
template <>
float FromString<float>(const std::string& str)
{
    std::cout << "From string to float" << std::endl;
    return 0;
}
 
 
class Foo
{
public:
    template <typename T>
    void Func(const std::string& str)
    {
        std::vector<T> v;
        v.push_back(FromString<T>(str));
    }
};
 
 
int main(void)
{
    Foo foo;
    foo.Func<int>("1");
    foo.Func<float>("1");
    return 0;
}
0
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
26.03.2013, 20:24  [ТС]
а какая студия?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2013, 20:24
Помогаю со студенческими работами здесь

Вызов функции в параметре другой функции
программа: #include &lt;iostream&gt; using namespace std; struct E { E() {} }; void f(const E&amp; e)

Вызов функции в возврате значения функции
Есть функция: int function1(a) { ...... return function2(function1(b),function1(c)); } Как работает такая хитрая система?

Вызов функции с массивом указателей на функции
Как вызвать такую функцию в maine? void Grafik(void (*funks)(int), int numberFunks, int x_size) { (*funks)(x_size); } Так не...

вызов функции из под функции
Добрый вечер. Такая ситуация: есть функция, назовем ее MainThreadFunc. Как можно сделать так, чтобы любая другая функция, которую я напишу,...

Вызов функции
Имеется такая вот функция, и к ней нужно написать вызов. #include &lt;stdio.h&gt; char *F12(char **p, int n) { int k,i,j; for...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru