Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
69 / 57 / 14
Регистрация: 20.12.2013
Сообщений: 656
1

переход с 32 бит на 64 бит

13.12.2016, 09:37. Показов 1573. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Пробую на builder 10 перевести проект с 32 на 64 бит. Возникают странные ошибки:
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
template <typename T> class DOT
{
 friend SIMULATION;
 private:
 T mas[3];    //Координаты точки пересечения
 DOT* pNext;   //Указатель на следующий элемент, если надо, т.е. если формируется связный список
 DOT* pPrev;   //Указатель на предыдущий элемент, если надо, т.е. если формируется связный список
 size_t ind;      //Индекс элемента в массиве - 'внешняя' характеристика связного списка для связи с массивом
 public:
 
 DOT();
 DOT(T x1, T x2, T x3);
 DOT(const DOT& dts);
 DOT(const T vaL);
 ~DOT();
 
 DOT& operator=(const DOT& dts);
 DOT& operator=(const T vaL);
 DOT& operator+=(const DOT& dts);
 DOT& operator+=(const T vaL);
 DOT& operator-=(const DOT& dts);
 DOT& operator-=(const T vaL);
 T operator*=(const DOT& dts);  //Скалярное произведение
 DOT& operator*=(const T vaL);
 DOT& operator/=(const T vaL);
 
 T& operator[](size_t n){if(n<0 || n>2) throw; else return mas[n];};
 DOT operator+(const DOT& dts);
 DOT operator+(const T vaL);
 friend DOT operator+<T>(const T vaL, const DOT& dts);
 DOT operator-(const DOT& dts);
 DOT operator-(const T vaL);
 friend DOT operator-<T>(const T vaL, const DOT& dts);
 DOT operator*(const T vaL);
 T operator*(const DOT& dts);   //Скалярное произведение
 friend DOT operator*<T>(const T vaL, const DOT& dts);
};
Ругается на строчки с friend - [bcc64 Error] my_templates.h(58): friends can only be classes or functions.
Ошибка [bcc64 Error] my_templates.h(58): expected ';' at end of declaration list вылезает, судя по всему, в связи с предыдущей.
На 32 бит таких проблем не было - не понимаю куда смотреть, то ли вообще наведенная ошибка. Но кроме этих ошибок и предупреждений ничего больше нет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2016, 09:37
Ответы с готовыми решениями:

Бит 8, младший и старший бит (по книге)
Добрый день. Вот читаю книгу, и не пойму элементарной на первый взгляд вещи. Как понять...

Самые часто встречающиеся 24 символа кодировать по 5 бит. А все остальные по 10 бит
Требуется: самые часто встречающиеся 24 символа кодировать по 5 бит. А все остальные по 10 бит....

Поделить строку на блоки по 12 бит и заменить в каждом блоке случайный бит
На входе есть строка типа string, каждый символ нужно перевести в последовательность битов, и эту...

При сложении по модулю два двух чисел по 48 бит пропадает 1 бит
Здравствуйте, помогите пожалуйста. В этой строке пропадает 1 бит, т.е. должно быть 48, а их 47. R...

7
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
13.12.2016, 09:44 2
Цитата Сообщение от AndrSlav Посмотреть сообщение
SIMULATION
Что это?
0
69 / 57 / 14
Регистрация: 20.12.2013
Сообщений: 656
13.12.2016, 09:50  [ТС] 3
Цитата Сообщение от nd2 Посмотреть сообщение
Что это?
Извиняюсь, это класс, на эту строчку не ругается, не надо было мне ее приводить. Ругается на строчки 30, 33, 36 и, похоже, надо писать
C++
1
friend DOT<T> operator+(const T vaL, const DOT& dts);
По крайней мере, в этом случае здесь ошибки не возникают, но вылезают новые(
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
13.12.2016, 09:53 4
Цитата Сообщение от AndrSlav Посмотреть сообщение
Возникают странные ошибки:
Скорее странно, что их раньше не возникало. Этот friend SIMULATION; выглядит совершенно бессмысленно. Надежда лишь на то, что SIMULATION - это какой-то макрос, который потерялся при переходе.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
13.12.2016, 09:53 5
Цитата Сообщение от AndrSlav Посмотреть сообщение
это класс, на эту строчку не ругается
Странно, что не ругается. Специфика builder? По builder вопросы лучше там задавать: https://www.cyberforum.ru/cpp-builder/
0
69 / 57 / 14
Регистрация: 20.12.2013
Сообщений: 656
13.12.2016, 09:58  [ТС] 6
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Скорее странно, что их раньше не возникало.
Это да, бесит, что только сменил 32 на 64 бит, а сразу лезет что-то непонятное, сейчас вдруг istringstream перестал видеть вообще.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
выглядит совершенно бессмысленно
согласен, это, скорее, затычка, поскольку пишу уже несколько лет с большими перерывами, и пока нет времени переписывать заново, увы (Последний раз вообще в апреле смотрел - многое уже забыл).
0
0 / 0 / 2
Регистрация: 13.12.2016
Сообщений: 3
13.12.2016, 10:05 7
Дружественными могут быть только классы или функции. Что здель делает SIMULATION действительно не совсем понятно.
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
13.12.2016, 10:14 8
Цитата Сообщение от AndrSlav Посмотреть сообщение
C++
1
2
3
DOT operator+(const DOT& dts);
DOT operator+(const T vaL);
friend DOT operator+<T>(const T vaL, const DOT& dts);
Проблема в том, что после того, как вы объявили внутренние методы operator +, неквалифицированное имя operator + будет теперь ссылаться именно на них. То есть вы пытаетесь использовать имя operator + как имя шаблона, в то время как оно уже объявлено ранее как нешаблонное. Отсюда и ошибка, хотя сообщение от компилятора, конечно, весьма туманное.

Перенесите friend declaration для внешнего шаблонного operator + выше объявления обычных внутренних нешаблонных operator + и проблема пропадет.

C++
1
2
3
4
5
6
7
8
template <typename T> class DOT
{
  ...
  friend DOT operator+<T>(const T vaL, const DOT& dts);
  DOT operator+(const DOT& dts);
  DOT operator+(const T vaL);
  ...
};
Именно в таком порядке.


-------------

Альтернативный вариант - раннее объявление шаблона еще перед классом, а затем использование квалифицированного имени ::operator+ в объявлении друга

C++
1
2
3
4
5
6
7
8
9
10
11
template <typename T> class DOT;
template <typename T> DOT<T> operator+(const T vaL, const DOT<T>& dts);
 
template <typename T> class DOT
{
  ...
  DOT operator+(const DOT& dts);
  DOT operator+(const T vaL);
  friend DOT (::operator+<T>)(const T vaL, const DOT& dts);
  ...
};
или

C++
1
2
3
4
5
6
7
8
9
10
11
template <typename T> class DOT;
template <typename T> DOT<T> operator+(const T vaL, const DOT<T>& dts);
 
template <typename T> class DOT
{
  ...
  DOT operator+(const DOT& dts);
  DOT operator+(const T vaL);
  friend auto ::operator+<T>(const T vaL, const DOT& dts) -> DOT;
  ...
};
2
13.12.2016, 10:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2016, 10:14
Помогаю со студенческими работами здесь

Сделать в числе n циклическую перестановку четных бит на k бит вправо
Написать программу, которая позволит ввести два числа n и k типа ulong с клавиатуры, напечатать их...

Подскажите какую аппаратную платформу с моим железом ставить? 64-бит или 86-бит !
Народ всем здравствуйте!!! Вчера обновил железо на своей машине! Проц. AMD Athlon II X4 631 для...

Преобразовать прямоугольную матрицу так, чтобы ее ряды расположились на увеличение их бит-в-бит сумм
Доброго времени суток! Прошу помочь с решением простых задач 2.Реформировать прямоугольную...

Нахождение бит мантиссы и бит порядка вещественного числа
В вузе задали написать программу, которая определяет в каких байтах расположена мантисса, а в каких...


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

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