3

コードでテンプレートを使用しようとすると、次の問題に直面しています

C 関数から呼び出す C++ コードがいくつかあります。

問題は、ステートメント 1 と 2 の次のコードで異なる値を取得していることです。

Type id : unsigned int
statement 1 : 4
statement 2 : 1

C++ コード:

template <typename T>
void func(T* value, unsigned int len = sizeof(T)) {
     cout << "Type id : " << typeid(T).name() << endl;
     cout << "statement 1 " << sizeof(T) << endl;
     cout << "statement 2 " << len << endl;
}

template <typename T>
void func1(T data) {
    T val = data;
    func(&val);
}


void test(void *ptr, unsigned int len) {
   switch(len) {
      case 1:
          func1(*(static_cast<uint32_t *>(ptr))
          break;
   }
}

これは Windows でのみ発生します。Linux では問題なく動作します。

4

1 に答える 1

1

私は4,4を取得します。SP のインストールが必要な場合があります

于 2012-12-19T12:53:11.763 に答える