Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84

error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов

11.11.2012, 01:27. Показов 4649. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
привет всем господа программисты ! как исправить такую ошибку "error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов". IDE vc++
вот описан функтор
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
#pragma once
 
#include "rgb2hsl.h"
#include <vector>
#include <iostream>
 
using namespace std;
 
class Hsl : public rgb2hsl
{
public:
    Hsl(vector<double>& r, vector<double>& g
        , vector<double>& b): rgb2hsl(r, g, b), count(0) {  }
    double operator()()
    {
         ++count;
        if(*find(R.begin(), R.end(), *MAX3()) == *MAX3())
            for(int i = 0; i < 10; i++)
                if(G[i] > B[i])
                    return 60.0 * ((G[i] - B[i]) / resultMaxMin()[0]) + 0.0;
    }
private:
    int count;
};
клиентская область
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
#include "stdafx.h"
#include "rgb2hsl.h"
#include "Hsl.h"
#include <iostream>
#include <conio.h>
#include <vector>
#include <iterator>
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<double> r, g, b;
    for(int i = 0; i < 10; i++)
    {
        r.push_back(rand() % 256);
        g.push_back(rand() % 256);
        b.push_back(rand() % 256);
    }
    Hsl rgb(r, g, b);
    rgb.show();
    if(*find(r.begin(), r.end(), *rgb.MAX3()) == *rgb.MAX3())
    {
        for(int i = 0; i < 10; i++) 
        {
            if(g[i] >= b[i])
                cout<<60.0 * ((g[i] - b[i]) / rgb.resultMaxMin()[0]) + 0.0<<" ";
            else if(g[i] < b[i])
                cout<<60.0 * ((g[i] - b[i]) / rgb.resultMaxMin()[0] + 360.0)<<" ";
        }
    }
    else if(*find(g.begin(), g.end(), *rgb.MAX3()) == *rgb.MAX3())
            for(int i = 0; i < 10; i++)
                cout<<60.0 * ((b[i] - r[i]) / rgb.resultMaxMin()[0]) + 120.0<<" ";
    else if(*find(b.begin(), b.end(), *rgb.MAX3()) == *rgb.MAX3())
            for(int i = 0; i < 10; i++)
                cout<<60.0 * ((r[i] - g[i]) / rgb.resultMaxMin()[0]) + 240.0<<" ";
    cout<<endl;
    vector<double> result(10);
    generate(result.begin(), result.end(), rgb()); //вот здесь я пытаюсь применить функтор, но почему то вылетает ошибка
    copy(result.begin(), result.end(), ostream_iterator<int>(cout, " "));
    
    _getch();
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2012, 01:27
Ответы с готовыми решениями:

Error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов
Приветствую, есть у меняя вопрос касаемо кода на плюсах. На 30 строке, а именно на y = f(x) выдает ошибку: //error C2064: результатом...

Error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов
Привет! class GeneratorSudoku: ... void mix(int amount_shuffles = 31) { ...

Error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов
Выдает ошибку, смежные темы и msdn не помогли понять мою ошибку. Прошу помочь разобраться. #include &quot;stdafx.h&quot; #include...

24
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.11.2012, 02:14
А это не нужно? Или есть в .h ?
C++
1
#include <algorithm>
1
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
11.11.2012, 02:28  [ТС]
alsav22, есть в .h )
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
11.11.2012, 02:34
Цитата Сообщение от Виталий123 Посмотреть сообщение
rgb.show();
и где она у тебя в описании класса?
0
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
11.11.2012, 02:40  [ТС]
ValeryS, она унаследовано от rgb2hsl
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
11.11.2012, 02:47
ну дак покажи как реализована и заодно
Цитата Сообщение от Виталий123 Посмотреть сообщение
resultMaxMin()
уж больно ты странно её используешь
и вот это переведи
Цитата Сообщение от Виталий123 Посмотреть сообщение
if(*find(r.begin(), r.end(), *rgb.MAX3()) == *rgb.MAX3())
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.11.2012, 04:17
C++
1
generate(result.begin(), result.end(), rgb);
И ещё. Функтор возвращает значение, если выполняется условие в if(). А если не выполняется (если не будет в диапазоне значения G[i] > B[i]), что возвращается? У вас компилятор не выдаёт предупреждение по этому поводу?
1
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
11.11.2012, 12:06  [ТС]
alsav22, верно подметил ) если функтор переписать в обычную функцию... компилятор не выдаст ошибку, всего лишь какие то неправильно числа покажет. а так если добавить else(уже много всякие варианты перебирал, и заметил, что если используешь унаследованные члены и методы для operator()... вылетает обязательно ошибка) в функтор , и вызвать ее через generate все равно такая ошибка выскакивает...

Добавлено через 1 минуту
ValeryS, вот класс rgb2hsl
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
#pragma once
 
#include <vector>
#include <iostream>
#include <algorithm>
 
#include <iterator>
 
using namespace std;
 
class rgb2hsl
{
public:
    rgb2hsl(vector<double>& r, vector<double>& g
        , vector<double>& b): R(r.begin(), r.end()), G(g.begin(), g.end())
    , B(b.begin(), b.end()) { cout<<"G ";
    copy(G.begin(), G.end(), ostream_iterator<double>(cout, " "));
    cout<<endl; cout<<"B ";
    copy(B.begin(), B.end(), ostream_iterator<double>(cout, " "));
    cout<<endl; cout<<"R ";
    copy(R.begin(), R.end(), ostream_iterator<double>(cout, " "));
    cout<<endl;
    }
    vector<double>::iterator MIN(vector<double>& A, vector<double>& B)
    {
        vector<double>::iterator  j, i;
        j = min_element(A.begin(), A.end());
        i = min_element(B.begin(), B.end());
        if(*j <= *i) return j;
        else return i;
    }
    vector<double>::iterator MIN3()
    {
        vector<double>::iterator j, i;
        j = min_element(R.begin(), R.end());
        i = min_element(G.begin(), G.end());
        if(*j <= *i) return MIN(R, B);
        else return MIN(G, B);
    }
    vector<double>::iterator MAX(vector<double>& A, vector<double>& B)
    {
        vector<double>::iterator j, i;
        j = max_element(A.begin(), A.end());
        i = max_element(B.begin(), B.end());
        if(*j >= *i) return j;
        else return i;
    }
    vector<double>::iterator MAX3()
    {
        vector<double>::iterator j, i;
        j = max_element(R.begin(), R.end());
        i = max_element(G.begin(), G.end());
        if(*j >= *i) return MAX(R, B);
        else return MAX(G, B);
    }
    vector<double> resultMaxMin()
    {
        vector<double> j, i, result;
        j.push_back(*MAX3()); i.push_back(*MIN3());
        transform(j.begin(), j.end(), i.begin(), back_inserter(result), minus<double>());
        return result;
    }
    void show()
    {
        cout<<"MIN3 "; cout<<*MIN3()<<endl;
        cout<<"MAX3 "; cout<<*MAX3()<<endl;
        vector<double> tempResult = resultMaxMin(); cout<<"resultMaxMin ";
        copy(tempResult.begin(), tempResult.end(), ostream_iterator<double>(cout, " "));
        cout<<endl;
    }
protected:
    vector<double> R; vector<double> G; vector<double> B;
};
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.11.2012, 12:20
Если так:
C++
1
generate(result.begin(), result.end(), rgb);
это ошибка пропадает? "error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов"
0
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
11.11.2012, 12:29  [ТС]
alsav22, пропадает,, но числа показывает неправильные...
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.11.2012, 12:45
Цитата Сообщение от Виталий123 Посмотреть сообщение
alsav22, пропадает,, но числа показывает неправильные...
Возврат нормальный сделали? Вот из-за этого будут неправильные:
А если не выполняется (если не будет в диапазоне значения G[i] > B[i]), что возвращается?
1
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
11.11.2012, 17:54  [ТС]
alsav22, теперь все сделал как вы говорили...теперь другая ошибка появилась
вот код, который переписал в классе Hsl
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double operator()()
    {
 
        ++count;
        if(*find(R.begin(), R.end(), *MAX3()) == *MAX3())
        {
            for(int i = 0; i < 10; i++) 
            {
                if(G[i] >= B[i])
                    return 60.0 * ((G[i] - B[i]) / resultMaxMin()[0]) + 0.0;
                else if(G[i] < B[i])
                    return 60.0 * ((G[i] - B[i]) / resultMaxMin()[0]) + 360.0;
            }
        }    
    }
которые показывают такие числа, как будто отсутствует счетчик и почему числа как int, в не double
Миниатюры
error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов  
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.11.2012, 01:38
У вас, всё равно, возврат не во всех случаях сделан. Если это условие не выполнится, то возврата не будет:
C++
1
if(*find(R.begin(), R.end(), *MAX3()) == *MAX3())
В какой среде делаете?
1
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
12.11.2012, 02:10  [ТС]
alsav22, в visual c++. я нашел ошибки и исправил ...теперь все работает как надо...и спс за то что пытался помочь ))
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.11.2012, 05:34
Правильный возврат, всё-таки, сделайте. То что работает, ещё не значит, что всё правильно. Этот косяк может, при определённых условиях, проявиться. Если првильного возврата нет, то Студия на это указывает.
0
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
12.11.2012, 17:32  [ТС]
alsav22, все таки ты прав. написал отладочный код , оказывается присутствует или утечка памяти или что еще другое...

Добавлено через 4 часа 57 минут
alsav22, начал разбирать почему утечка памяти происходит... и нашел интересную фигню, что когда создаешь хотя бы один объект vector почему то происходит утечка памяти. почему это происходит ?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.11.2012, 17:45
Цитата Сообщение от Виталий123 Посмотреть сообщение
alsav22, начал разбирать почему утечка памяти происходит... и нашел интересную фигню, что когда создаешь хотя бы один объект vector почему то происходит утечка памяти. почему это происходит ?
С чего Вы взяли, что так происходит?
0
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
12.11.2012, 17:52  [ТС]
Croessmah, вот самому интересно , вот код отладочный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <vector>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE* pOut(nullptr);
    errno_t err = freopen_s(&pOut, "debug_out.txt", "w", stdout);
    if(err)
        cout<<"Error"<<endl;
    _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
 
    _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
        vector<int> r;
        _getch();
        return 0;
}
может я что то неправильно делаю...
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
12.11.2012, 18:08
на выходе пустой фаил debug_out.txt

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <vector>
#ifdef _DEBUG
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
#endif
using namespace std;
 
int main()
{
    {vector<int> r;}
     _CrtDumpMemoryLeaks();
        _getch();
        return 0;
}
1
3 / 5 / 1
Регистрация: 29.11.2011
Сообщений: 84
12.11.2012, 18:15  [ТС]
Croessmah, можешь рассказать по подробней про свой код))) ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2012, 18:15
Помогаю со студенческими работами здесь

Error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов
выдает ошибку, я посмотрел похожие темы, но ничего не помогло. в общем мож кто поймет в чем ошибка #pragma once ...

Error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов
Извините за тупой вопрос, но что то не выходит каменный цветок, программа простейшая но С++ вижу впервые а задачи уже начали во всю...

Error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов
template &lt;class T&gt; class Stack { private: T* item; int m_size; public: Stack(int MaxSize) { m_size(0); item = new T;} bool...

Ошибка 1 error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов
Помогите пожалуйста разобраться не пойму почему выдает 2 ошибки? Ошибка 1 error C2064: результатом вычисления фрагмента не является...

C2064: результатом вычисления фрагмента не является функция,принимающая 2 аргументов в функторе
Делал шаблонную сортировку через функтор,выдает ошибку C2064: результатом вычисления фрагмента не является функция, принимающая 2...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru