Russian Qt Forum
Ноябрь 24, 2024, 00:51
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
Перестановка мест...))
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Перестановка мест...)) (Прочитано 4141 раз)
0...-5
Гость
Перестановка мест...))
«
:
Февраль 13, 2011, 14:00 »
Объясните, почему сборка выражения 'y = -c * x' выдает ошибку 'collect2 ld returned 1 exit status', если 'c' объявлена в классе с модификаторами static const, тогда как с выражением 'y = -x * c' таких проблем нет...
Записан
Fat-Zer
Гость
Re: Перестановка мест...))
«
Ответ #1 :
Февраль 13, 2011, 14:09 »
хоть написали бы каких типов переменные... и что принимает/возвращает operator* и унарный operator- для них
Записан
brankovic
Гость
Re: Перестановка мест...))
«
Ответ #2 :
Февраль 13, 2011, 14:12 »
Такое бывает, когда компилятор пытается сделать ссылку на static const переменную. По сути это глюк, можно обойти через int tmp = c и дальше юзать tmp.
Просто интересно, какой компилятор? В gcc вроде это давно пофиксили..
Записан
0...-5
Гость
Re: Перестановка мест...))
«
Ответ #3 :
Февраль 13, 2011, 14:23 »
Цитата: Fat-Zer от Февраль 13, 2011, 14:09
хоть написали бы каких типов переменные... и что принимает/возвращает operator* и унарный operator- для них
float, операторы не перегружались
Записан
0...-5
Гость
Re: Перестановка мест...))
«
Ответ #4 :
Февраль 13, 2011, 14:24 »
Цитата: brankovic от Февраль 13, 2011, 14:12
Такое бывает, когда компилятор пытается сделать ссылку на static const переменную. По сути это глюк, можно обойти через int tmp = c и дальше юзать tmp.
Просто интересно, какой компилятор? В gcc вроде это давно пофиксили..
Именно gcc...Если это глюк, то весьма неприятный(((
Записан
BRE
Гость
Re: Перестановка мест...))
«
Ответ #5 :
Февраль 13, 2011, 14:26 »
Цитата: 0...-5 от Февраль 13, 2011, 14:24
Именно gcc...Если это глюк, то весьма неприятный(((
Вижу ошибку линковки... Вопрос: а статический член класса правильно описан?
Записан
0...-5
Гость
Re: Перестановка мест...))
«
Ответ #6 :
Февраль 13, 2011, 14:40 »
Цитировать
Вижу ошибку линковки... Вопрос: а статический член класса правильно описан?
static const float c = 0.1
А собственно, где тут можно ошибиться?
Записан
Fat-Zer
Гость
Re: Перестановка мест...))
«
Ответ #7 :
Февраль 13, 2011, 14:44 »
Цитата: 0...-5 от Февраль 13, 2011, 14:40
static const float c = 0.1
А собственно, где тут можно ошибиться?
Если так в хедере написано, то можно... не уверен но вроде надо так:
Код
C++ (Qt)
// в хедере:
class
A
{
static
const
float
c
;
}
// в cpp:
const
float
A
::
c
=
0.1
;
могу ошибаться...
Записан
brankovic
Гость
Re: Перестановка мест...))
«
Ответ #8 :
Февраль 13, 2011, 14:54 »
Цитата: 0...-5 от Февраль 13, 2011, 14:40
static const float c = 0.1
А собственно, где тут можно ошибиться?
Вообще-то по стандарту запрещено флоаты определять как static const члены c присвоением в классе, это расширение gcc. Лучше так делать:
struct A {static float const f;};
float const A::f = 0.1;
Другое дело такой глюк и с интами бывает. Общий work-around состоит в замене
static float const c = 0.1;
на
static float c () {return 0.1;}
Записан
0...-5
Гость
Re: Перестановка мест...))
«
Ответ #9 :
Февраль 13, 2011, 16:10 »
Хм...но ведь 'y = -x * c' не вызывает ошибки, т.е. дело в применении отрицания к статическому члену класса...С интами, честно говоря, не пробовал, но использование статической функции смахивает на костыли
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...