Project

General

Profile

バグ #2088

Typename.hでのエラー `_nil' is not a member of type <struct型名>

Added by n-ando over 11 years ago. Updated over 7 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
05/04/2011
Due date:
% Done:

100%

Estimated time:

Description

vine40でコンパイルすると、

Controller.cpp:35:   instantiated from here
../../src/lib/rtm/Typename.h:83: error: `_nil' is not a member of type `
   RTC::TimedFloat'

というエラーがでる。

History

#1 Updated by n-ando over 11 years ago

vine40 での GCCのバージョン

n-ando@vine40:~> g++ -v
/usr/lib/gcc-lib/i386-vine-linux/3.3.6/specs から spec を読み込み中
コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-vine-linux
スレッドモデル: posix
gcc バージョン 3.3.6 release (Vine Linux 3.3.6-0vl7)

#2 Updated by n-ando over 11 years ago

  • Status changed from 新規 to 終了
  • % Done changed from 0 to 100

以下の2つの関数を作ることで対処。

  template <class T>
  const char* toRepositoryIdOfStruct()
  {
    return typecode<false, T>::id();
  }

  template <class T>
  const char* toRepositoryIdOfObject()
  {
    return typecode<true, T>::id();
  }

これらを使用しているInPort.h/OutPort.hでは

#if defined(__GNUC__) && (__GNUC__ <= 3 && __GNUC_MINOR__ <= 3) 
      :    InPortBase(name, ::CORBA_Util::toRepositoryIdOfStruct<DataType>()),
#else
      :    InPortBase(name, ::CORBA_Util::toRepositoryId<DataType>()),
#endif

のようにしてifdefで対処。

#3 Updated by n-ando over 7 years ago

  • Target version deleted (RELEASE_1_1_0)

Also available in: Atom PDF