На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Проблема с generic classes (Managed C++) , error C2296: '*' : illegal, left operand has type 'T'
    Доброго времени суток. Долго думал, как назвать тему, но, к сожалению, лучше не придумал.
    Собственно, проблема (класс, интерфейс, методы - все систематически):
    ExpandedWrap disabled
      generic <class T>
      public interface class MyInterface
      {
         T operator *(T);
         T operator +(T);
      };
       
      generic<class T>
      where T : MyInterface<T>
      public ref class MyClass : MyInterface<MyClass<T>^>
      {
      public:
         //......
         virtual MyClass<T> ^operator *(MyClass<T> ^A)
         {
             return this;
         }
         virtual MyClass<T> ^operator +(MyClass<T> ^A)
         {
             return this;
         }
         void MyMethod(void)
         {
            T a,b,c;
            c = a*b;  //error C2296: '*' : illegal, left operand has type 'T'
                      //error C2297: '*' : illegal, right operand has type 'T'
       
            c = a+b;  //OK
         }
         //......
      };
    Как можно разрешить проблему? (непонимаю, почему ему не нравиться operator*(), но с operator +() все проходит)
      Проблема решена. Вместо
      ExpandedWrap disabled
        c=a*b;
      надо
      ExpandedWrap disabled
        c=a->operator *(b);

      Есть подозрения на сам тип generic (думаю, что там есть определенные операторы *).
      Сообщение отредактировано: Hehe -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0185 ]   [ 16 queries used ]   [ Generated: 27.04.24, 19:53 GMT ]