Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Stason676
Заблокирован
#1

Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки" - C++

29.07.2014, 18:53. Просмотров 841. Ответов 15
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <typename T> int GnomeSort(T* p, int length)
{
    int i, count;
 
    i = 0;
    count = 0;
 
    while(i < length)
    {
        if(i == 0 || p[i] >= p[i - 1]) ++i;
        else
        {
            T temp = p[i - 1];
            p[i - 1] = p[i];
            p[i] = temp;
            --i;
        }
 
        count++;
    }
 
    return count;
}
Здравствуйте, прошу помощи, почему не работает код. Проект собирал в "MicroSoft Visual Studio 2010".
Ошибка 1 error C2075: temp: для инициализации массива требуются фигурные скобки c:\documents and settings\admin\мои документы\visual studio 2010\projects\test\test\main.cpp 29
Ошибка 2 error C2106: =: левый операнд должен быть левосторонним значением c:\documents and settings\admin\мои документы\visual studio 2010\projects\test\test\main.cpp 30
Ошибка 3 error C2106: =: левый операнд должен быть левосторонним значением c:\documents and settings\admin\мои документы\visual studio 2010\projects\test\test\main.cpp 31
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2014, 18:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки" (C++):

Error C2361: пропуск инициализации "Height" из-за метки "default" - C++
Добрый день! Решила чуть изменить типичный код из учебника - и тут же появилась ошибка компилятора. Код вот такой: #include...

Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1 - C++
Книга &quot;Основы программирования на C++ том 1&quot;(Стэнли Б.Липпман). Приводится пример кода. #include &lt;iostream&gt; #include &lt;string&gt; using...

Ошибка при компиляции "error C2088: <<: недопустимо для class" - C++
Доброго времени суток :) у меня при компиляции возникает ошибка 1&gt;main.cpp(493): error C2088: &lt;&lt;: недопустимо для class суть в том...

Фигурные скобки: Мне пишут что ошибка в закрытие скобки после return. - C++
#include &lt;iostream&gt; using namespace std; int main(){ int *ptr_number = new int; int *sum = new int(0); cin &gt;&gt; *ptr_number; ...

Отсутствует ";" при создании функции внутри другой функции - C++
Приветствую. Есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { double er(double...

Ошибка "идентификатор не определен" при создании производного класса - C++
всем доброго времени суток. пытаюсь создать производный класс для machine, в котором нужно вывести всё, что ввёл, но компилятор почему-то...

15
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
29.07.2014, 18:56 #2
В качестве T какой тип выступает?
0
Stason676
Заблокирован
29.07.2014, 19:08  [ТС] #3
Пробовал с "string" и "int", ошибки одинаковые.
0
DrOffset
7504 / 4500 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
29.07.2014, 19:12 #4
Stason676, код из main.cpp тоже покажи пожалуйста.
0
Stason676
Заблокирован
29.07.2014, 19:13  [ТС] #5
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
#include <iostream>
#include <string>
 
template <typename T> int GnomeSort(T*, int);
 
int main(int argc, char* argv[])
{
    std::string s = "23451";
    int count = GnomeSort(&s, 5);
 
    int a[5] = { 2, 3, 4, 5, 1 };
    int count2 = GnomeSort(&a, 5);
 
    return 0;
}
 
template <typename T> int GnomeSort(T* p, int length)
{
    int i, count;
 
    i = 0;
    count = 0;
 
    while(i < length)
    {
        if(i == 0 || p[i] >= p[i - 1]) ++i;
        else
        {
            T temp = p[i];
            p[i] = p[i - 1];
            p[i - 1] = temp;
            --i;
        }
 
        count++;
    }
 
    return count;
}
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
29.07.2014, 19:16 #6
Первый вариант не сработает. Во втором убери амперсанд (&).
1
Stason676
Заблокирован
29.07.2014, 19:19  [ТС] #7
Почему?
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
29.07.2014, 19:21 #8
Потому что передастся указатель на string, по этому указателю только в p[0] будет валидный элемент.
1
Stason676
Заблокирован
29.07.2014, 19:27  [ТС] #9
Возможно ли написать шаблон для сортировки всего. Спасибо.
0
Kuzia domovenok
2119 / 1949 / 192
Регистрация: 25.03.2012
Сообщений: 6,755
Записей в блоге: 1
29.07.2014, 19:31 #10
Stason676, так ты и написал шаблон для сортировки всех массивов! Но string это не массив же!
1
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
29.07.2014, 19:38 #11
Вот такую строку можно отсортировать твоим алгоритмом:
C++
1
2
char str[] = "jdurbfofywn";
GnomeSort( &str[0], strlen( str ) );
1
DrOffset
7504 / 4500 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
29.07.2014, 19:38 #12
Цитата Сообщение от castaway Посмотреть сообщение
по этому указателю только в p[0] будет валидный элемент.
Причем и это не факт.
1
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
29.07.2014, 19:44 #13
DrOffset, почему?
1
DrOffset
7504 / 4500 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
29.07.2014, 19:59 #14
Цитата Сообщение от castaway Посмотреть сообщение
DrOffset, почему?
Да меня переклинило чего-то. Почему-то подумал про вот такой хак:
C++
1
2
3
4
5
6
7
8
9
10
#include <string>
 
int main ()
{
    std::string str = "test";
 
    char * p = (char*)&str;
 
    std::cout << p[0];
}
пару раз встречал такое, использовалось в расчете на то, что внутренний буфер расположен в самом начале класса.
Иногда там могут быть данные, но чаще всего там мусор, ибо зависит от многих вещей, выравнивания, оптимизации, способа организации внутренностей std::string и т.п.
В общем - штанга. Я только с работы, еще в своих мыслях
1
Stason676
Заблокирован
30.07.2014, 15:11  [ТС] #15
Всем спасибо за ответы!
0
30.07.2014, 15:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2014, 15:11
Привет! Вот еще темы с ответами:

Ошибка при создании класса библиотека: "'fflush' was not declared in this scope" - C++
Доброго времени суток. Подскажите пожалуйста почему выдает ошибку? Вот задание: Вот сам код #include &lt;iostream&gt; #include...

Ошибка "Необъявленный идентификатор" при создании конструктора в наследственном классе - C++
Выдает ошибку Необъявленный идентификатор a b,когда создаю конструктор в наследственном классе #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Ошибка "error C2446: :: нет преобразования "int" в "char *" - C++
Ошибка: &quot;error C2446: :: нет преобразования &quot;int&quot; в &quot;char *&quot; Когда нажимаю двойным кликом на ошибку меня перекидывает в файл...

Ошибка при вводе массива: "Вызвано исключение: нарушение доступа для записи" - C++
Здравствуйте, имеется вот такая программа, при вводе третьего массива(Массив B) выкидывает ошибку &quot;Вызвано исключение: нарушение доступа...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.