0

私はこのコンストラクタを持っています:

Transform::Transform( float matrix[4][4] )
{
    m = matrix;
}

そして、このクラス定義:

class Transform
{
    float m[4][4];
public:
    Transform();
    Transform(float matrix[4][4]);

しかし、これはコンパイルされません。

何が間違っている可能性がありますか?

エラー 1 エラー C2440: '=' : 'float [][4]' から 'float [4][4]' に変換できません c:\Users\Josh\Documents\agui\trunk\src\Agui\Transform.cpp 75

ありがとう

4

3 に答える 3

4

c++11 を使用している場合は、次のように変更float matrix[4][4]してみてくださいstd::array<std::array<float,4>,4>

一口ですが、C配列がネイティブにサポートしていないような操作をサポートしています。

構文をクリーンアップするために、このようなことを行うことができます。

typedef std::array<std::array<float,4>,4> Matrix;

今、あなたはすることができます

Matrix myMatrix;

ps C++11 を使用していない場合は、vector代わりにarray. アレイとは少し異なりますが、より多くの機能も追加され、設定後のアクセスは同じです。

于 2013-01-09T02:08:29.903 に答える
3

Karthik's answer は優れています。代わりに、次のこともできます...

  for(int i = 0; i < 4; i++)
  {
     for(int j = 0; j < 4; j++)
      {
         m[i][j] = matrix[i][j];
      }
  }

原則は、コメントで述べた WhozCraig と同じです。

于 2013-01-09T02:11:09.393 に答える
1

コンストラクターにパラメーターを として宣言してもfloat matrix[4][4]、コンパイラーは最初の を無視し4ます。

于 2013-01-09T02:14:39.700 に答える