0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 13
1

Ошибка: "выражение должно представлять собой указатель на полный тип объекта"

21.12.2021, 10:58. Показов 2230. Ответов 14

Author24 — интернет-сервис помощи студентам
90 строка

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <cstring>
 
using namespace std;
 
void function(void(*op)(string), string s1)
{
    op(s1);
}
 
void f(string s1)
{
    string str;
    getline(cin, str);
    cout << count_if(str.cbegin(), str.cend(), [](unsigned char c) { return ispunct(c); }) - 1 << endl;
 
 
}
 
void fu(string s1)
{
    int l = 100;
    char* s = new char[l];
    int k = 0;
    cout << "Введите строку: \n\n";
    cin >> s;
    for (int i = 0; i < strlen(s); i++)
    {
        k++;
        if (!isdigit(s[i]))
        {
            k += 2;
        }
    }
    char* res = new char[k + 1];
    for (int i = 0, p = 0; i < strlen(s); i++)
    {
        res[p++] = s[i];
        if (!isdigit(s[i]))
        {
            res[p++] = s[i];
            res[p++] = s[i];
        }
 
    }
}
 
    void fun(string s1)
    {
        
        
        string S;
        getline(cin, S);
 
        int pos = 0;
        int uch = 0;
        unsigned char Arr[255] = {};
 
        for (unsigned i = 0; i < S.size(); ++i) {
            uch = (unsigned char)(S[i] - '0');
            if (Arr[uch]++ == 0) {
                S[pos++] = S[i];
            }
        }
        S.erase(S.begin() + pos, S.end());
        cout << '\n' << S << '\n';
 
    }
 
    int main()
    {
        setlocale(LC_ALL, "Russian");
        string s1;
        int (*func)(string);
        char st[255];
        int num, i, n;
        cout << "Введите строку на английском, после окончания, поставьте точку" << endl;
        for (i = 0; i < 255; i++)
        {
            cin >> st[i];
            if (st[i] == '.') break;
        }
        cout << " \n 0-(Выход)\n 1-(сколько знаков препинания до точки)\n 2-(утроить все буквы)\n 3-(убрать повторения)\n";
        while (1)
        {
            cin >> num;
            func[num](st, n);
        }
        return 0;
    }
Добавлено через 22 минуты
Yetty, можете помочь?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2021, 10:58
Ответы с готовыми решениями:

Ошибка:выражение должно представлять собой указатель на полный тип объекта
Доброго времени суток! Простенький код, но не получается. using namespace std;...

Ошибка выражение должно представлять собой указатель на полный тип объекта
По заданию, из матрицы нужно исключить столбец и строку, которые пересекают элемент с наибольшим по...

Ошибка "Выражение должно представлять собой указатель на полный тип" при работе со структурами
Возникает проблема при передаче структурных переменных в ф-цию Например: void showdatabase(struct...

Ошибка: "выражение должно представлять собой указатель на полный тип объекта"
Доброго времени суток ,уважаемые форумчане.:)При написании функции возникли затруднения,выдает...

Ошибка компиляции "выражение должно представлять собой указатель на полный тип объекта"
Здравствуйте! На языке C нужно создать массив из N случайных целых чисел (т.е. массив может...

14
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
21.12.2021, 10:58 2
И что ты пытаешься сделать этой конструкцией?
0
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,248
21.12.2021, 11:00 3
C++
1
2
3
4
5
6
7
8
9
    typedef int (*func_t)(string);
    func_t func[] = { f, fu, fun };
//...
        cout << " \n 0-(Выход)\n 1-(сколько знаков препинания до точки)\n 2-(утроить все буквы)\n 3-(убрать повторения)\n";
        while (1)
        {
            cin >> num;
            n = func[num](st);
        }
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 13
21.12.2021, 11:15  [ТС] 4
John Prick,
C++
1
cin >> num;
для индекса требуется массив или тип указателя ,
C++
1
   func_t func[] = { f, fu, fun };
error: invalid conversion from ‘void (*)(std::string)’ {aka ‘void (*)(std::__cxx11::basic_string)’} to ‘func_t’ {aka ‘int (*)(std::__cxx11::basic_string)’} [-fpermissive]
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 13
21.12.2021, 11:29  [ТС] 5
строка 90

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <cstring>
 
using namespace std;
 
void function(void(*op)(string), string s1)
{
    op(s1);
}
 
void f(string s1)
{
    string str;
    getline(cin, str);
    cout << count_if(str.cbegin(), str.cend(), [](unsigned char c) { return ispunct(c); }) - 1 << endl;
 
 
}
 
void fu(string s1)
{
    int l = 100;
    char* s = new char[l];
    int k = 0;
    cout << "Введите строку: \n\n";
    cin >> s;
    for (int i = 0; i < strlen(s); i++)
    {
        k++;
        if (!isdigit(s[i]))
        {
            k += 2;
        }
    }
    char* res = new char[k + 1];
    for (int i = 0, p = 0; i < strlen(s); i++)
    {
        res[p++] = s[i];
        if (!isdigit(s[i]))
        {
            res[p++] = s[i];
            res[p++] = s[i];
        }
 
    }
}
 
    void fun(string s1)
    {
        
        
        string S;
        getline(cin, S);
 
        int pos = 0;
        int uch = 0;
        unsigned char Arr[255] = {};
 
        for (unsigned i = 0; i < S.size(); ++i) {
            uch = (unsigned char)(S[i] - '0');
            if (Arr[uch]++ == 0) {
                S[pos++] = S[i];
            }
        }
        S.erase(S.begin() + pos, S.end());
        cout << '\n' << S << '\n';
 
    }
 
    int main()
    {
        setlocale(LC_ALL, "Russian");
        string s1;
        typedef int (*func_t)(string);
        func_t func[] = {f,fu,fun};
        char st[255];
        int num, i, n;
        cout << "Введите строку на английском, после окончания, поставьте точку" << endl;
        for (i = 0; i < 255; i++)
        {
            cin >> st[i];
            if (st[i] == '.') break;
        }
        cout << " \n 0-(Выход)\n 1-(сколько знаков препинания до точки)\n 2-(утроить все буквы)\n 3-(убрать повторения)\n";
        while (1)
        {
            cin >> num;
            n = func[num](st);
        }
        return 0;
    }
0
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,248
21.12.2021, 11:49 6
C++
1
2
3
4
typedef void(*func_t)(string);
func_t func[] = { f, fu, fun };
//...
func[num](std::string(st));
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,706
21.12.2021, 11:58 7
C++
1
2
3
4
5
typedef void (*func_t)(string);
...
cin >> num;
func[num](st);
...
0
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
21.12.2021, 12:00 8
Цитата Сообщение от studentsergey Посмотреть сообщение
для индекса требуется массив или указатель
Что это? К чему это?

Цитата Сообщение от studentsergey Посмотреть сообщение
строка 90
Вы нас обманывате. Нет ничего подобного в строке 90.
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 13
21.12.2021, 12:26  [ТС] 9
zss, func не определен
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,706
21.12.2021, 12:31 10
Цитата Сообщение от studentsergey Посмотреть сообщение
func не определен
а куда пропало
C++
1
func_t func[] = {f,fu,fun};
??????
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 13
21.12.2021, 12:36  [ТС] 11
zss,
C++
1
func_t func[] = {f,fu,fun};
если это не пропадает , то появляется

error: invalid conversion from ‘void (*)(std::string)’ {aka ‘void (*)(std::__cxx11::basic_string)’} to ‘func_t’ {aka ‘int (*)(std::__cxx11::basic_string)’}
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,706
21.12.2021, 12:38 12
где-то
Цитата Сообщение от zss Посмотреть сообщение
typedef void (*func_t)(string);
а здесь заменили на void?
0
0 / 0 / 0
Регистрация: 19.12.2021
Сообщений: 13
21.12.2021, 12:43  [ТС] 13
zss,
C++
1
n = func[num](st);
error: void value not ignored as it ought to be
0
18838 / 9839 / 2406
Регистрация: 30.01.2014
Сообщений: 17,277
21.12.2021, 14:54 14
Цитата Сообщение от studentsergey Посмотреть сообщение
C++
1
n = func[num](st);
....
Цитата Сообщение от zss Посмотреть сообщение
C++
1
func[num](st);
0
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
21.12.2021, 18:26 15
Цитата Сообщение от studentsergey Посмотреть сообщение
zss,
C++
1
func_t func[] = {f,fu,fun};
если это не пропадает , то появляется

error: invalid conversion from ‘void (*)(std::string)’ {aka ‘void (*)(std::__cxx11::basic_string)’} to ‘func_t’ {aka ‘int (*)(std::__cxx11::basic_string)’}


Если вы исправляете ошибки компиляции путем простого удаления ошибочных строк, то просто сразу удалите все, а оставьте только

C++
1
int main() {}
Это будет комипилироваться и работать без ошибок.
1
21.12.2021, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2021, 18:26
Помогаю со студенческими работами здесь

Ошибка C2228 выражение слева от должно представлять класс, структуру или объединение
Здравствуйте! При запуске программы выдавало ошибку на строчку 94 &quot;Ошибка C2228 выражение слева от ...

Ошибка "Выражение должно представлять класс, структуру или объединение"
clas_s #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; ...

Ошибка: "выражение слева от .num должно представлять класс, структуру или объединение"
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using namespace...

для индекса требуется массив или указатель, выражение должно иметь тип указателя на объект
Привет! Помогите, не могу понять как исправить эти ошибки( error C2109: для индекса требуется...

Ошибка: выражение слева от ".length"/".substr" должно представлять класс, структуру или объединение
выражение слева от &quot;.length&quot;/&quot;.substr&quot; должно представлять класс, структуру или объединение Почему...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru