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

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

Войти
Регистрация
Восстановить пароль
 
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
#1

warning: ISO C++ says that these are ambiguous - C++

25.10.2012, 22:51. Просмотров 312. Ответов 0
Метки нет (Все метки)

Вечер добрый.
Помогите раскрыть причину неоднозначности:
Действие:
C++
1
2
3
4
5
6
7
8
9
10
Matrix1 &Matrix1::mult(const Matrix1 &other)
{
    Matrix1 m;
    m.setRow1(mult(other.column1()));
    m.setRow2(mult(other.column2()));
    m.setRow3(mult(other.column3()));
    m.setRow4(mult(other.column4()));
    this->operator = (m);
    return *this;
}
Смысловые члены:
Для класса Matrix1
Прототипы для ф-ии mult и похожей на нее -> неоднозначность возникать не должна...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   /**
      * Ф-ия умножения текущей матрицы на другую матрицу
      *     Текущая матрица находится слева
      * @param other Адрес матрицы для умножения
      * @return Адрес текущей матрицы
      */
    Matrix1 &mult(const Matrix1 &other);
 
   /**
      * Ф-ия умножения матрицы на вектор
      *     Вектор находится справа
      * @param v Адрес вектора для умножения
      * @return Полученный вектор
      */
    Vec1 mult(const Vec1 &v) const;
C++
1
2
inline void setRow1(const Vec1 &val)
    { c->setX(val.x()); (c + 1)->setX(val.y()); (c + 2)->setX(val.z()); (c + 3)->setX(val.d()); }
C++
1
Vec1 *c;    /**< Указатель на первую колонку матрицы */
C++
1
2
3
4
PROPERTY(Vec1, column1, Column1, *c)
PROPERTY(Vec1, column2, Column2, *(c + 1))
PROPERTY(Vec1, column3, Column3, *(c + 2))
PROPERTY(Vec1, column4, Column4, *(c + 3))
Для класса Vec1
C++
1
2
3
4
PROPERTY(dim, x, X, *v)
PROPERTY(dim, y, Y, *(v + 1))
PROPERTY(dim, z, Z, *(v + 2))
PROPERTY(dim, d, D, *(v + 3))
C++
1
dim *v; /**< Указатель на первую строку столбца координат */
Где
C++
1
2
3
4
5
6
7
8
9
10
11
12
/**
  * @def PROPERTY(Type, Name, UpperCaseName, Val)
  * @brief Макрос позволяет определить для класса свойство
  * @param Type Тип возвращаемого и примнимаемого значения
  * @param Name Имя свойства
  * @param UpperCaseName Имя свойства с первой буквой в верхнем регистре
  * @param Val Имя переменной для возврата значения
  */
#define PROPERTY(Type, Name, UpperCaseName, Val)\
    inline Type Name() const { return Val; }\
    inline void set##UpperCaseName(const Type &val){ Val = val; }
typedef float dim;
Очень раздражают эти четыре варнинга. Причины не вижу. С указателями вроде правильно работаю. А дальше типизация вся выстраивается однозначно...
Но, видать, компилятор так не считает.
GCC 4.7.1

Добавлено через 20 минут
Так, причина найдена:
Ф-ия column1() возвращает вместо указателя на объект типа Vec1 сам объект. Соответственно при попытке взять адрес этого объекта может возникнуть ошибка тк он уже может быть к тому времени уничтожен.

Тогда теперь вопрос сводится к тому, как мне корректно преобразовать возвращаемый ф-иями Vec1 к (const Vec1 &) без лишних копирований и гарантией того, что объект действительно существует.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2012, 22:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос warning: ISO C++ says that these are ambiguous (C++):

Как понимать предупреждение комилятора gcc "ISO C++ says that these are ambiguous." - C++
предупреждение: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion...

Поменять стандарт ISO C99 на ISO C90 - C++
На домашнем компьютере (mac) компилирую программы в терминале через gcc, стандарт языка там ISO C99, однако в универе на компах ISO C90,...

Warning: stat failed For up.php (errno=2 - No such File Or directory) Warning: Undefined variable: part in - PHP
При выполнении скрипта у меня постоянно выдаются сообщения типа: Warning: Undefined index: Warning: stat failed For up.php (errno=2 -...

Warning C4101 и warning C4996 - C++
Здравствуйте, пишу программу &quot;Домашняя видеотека&quot;, в которой необходимо реализовать запить информации про фильм и поиск по жанру, и что бы...

Reference is ambiguous - C++
Всем доброго времени суток! Компилятор выдают ошибку в следующем коде: #include &lt;iostream&gt; using namespace std; struct distance...

'Rectangle' : ambiguous symbol - Visual C++
Добрый день! Есть функция Rectangle в \Microsoft SDKs\Windows\v6.1\include\wingdi.h и \framework\v2.0.50727\system.drawing.dll(обе...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2012, 22:51
Привет! Вот еще темы с ответами:

in field list is ambiguous - MySQL
Доброго времени суток! Имеется вот такой код,при выполнении пишет ошибку Column 'id_d' in field list is ambiguous &lt;?php ...

Column in from clause is ambiguous - PHP
Товарищи, нужна Ваша квалифицированная помощь! Выручайте пожалуйста, иначе из-за этой ошибки я скоро в дурку попаду. Моя база данных...

Ошибка reference is ambiguous - C++
Объясните пожалуйста, в чем ошибка? #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;fstream&gt; using namespace std; class...

Ambiguous column name в SELECT'е - SQL Server
Имеется 2 таблицы: 1-ая: 2 поля (IDмашины, Марка) 2-ая: 2 поля (IDмашины, Салон-продавец) Нужно вывести селект с машинами, у которых...


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

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

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