我有一個帶兩個參考變量的相機類。我想通過構造函數傳遞兩個引用並將引用變量賦值給這些變量,這樣如果我在這個類中更改這些變量,那麼我之前定義的其他變量也會發生變化。但是,我得到的錯誤:初始化程序列表中的參考文獻
a reference of type "D3DXMATRIX &" (not const-qualified) cannot be initialized with a value of type "D3DMATRIX"
和
error C2440: 'initializing' : cannot convert from 'D3DMATRIX' to 'D3DXMATRIX &'
這裏是我的代碼:
頭:
#ifndef CAMERA_H
#define CAMERA_H
#include <d3d10.h>
#include <d3dx10.h>
#include "globals.h"
#include "direct3D.h"
class Camera
{
private:
D3DXMATRIX &matProjection, &matView;
public:
Camera(
float fOVDeg, float nearCull, float farCull,
float xPos, float yPos, float zPos,
D3DMATRIX &matProjection, D3DMATRIX &matView);
void SetCamera(float fOVDeg, float nearCull, float farCull);
void AdjustCamera(float x, float y, float z);
};
#endif
來源:
#include "Camera.h"
Camera::Camera(
float fOVDeg, float nearCull, float farCull,
float xPos, float yPos, float zPos,
D3DMATRIX &matProjection, D3DMATRIX &matView)
: matProjection(matProjection), matView(matView)
{
this->SetCamera(fOVDeg, nearCull, farCull);
this->AdjustCamera(xPos, yPos, zPos);
}
// Set the fixed properties of the 3D camera
void Camera::SetCamera(float fOVDeg, float nearCull, float farCull)
{
// create a projection matrix
D3DXMatrixPerspectiveFovLH(
&matProjection,
(float)D3DXToRadian(fOVDeg), // the horizontal field of view
(FLOAT)SCREEN_WIDTH/(FLOAT)SCREEN_HEIGHT, // aspect ratio
nearCull, // the near view-plane
farCull); // the far view-plane
}
// Set the adjustable properties of the 3D camera
void Camera::AdjustCamera(float x, float y, float z)
{
D3DXMatrixLookAtLH(&matView,
&D3DXVECTOR3 (x, y, z),
&D3DXVECTOR3 (0.0f, 0.0f, 0.0f),
&D3DXVECTOR3 (0.0f, 1.0f, 0.0f));
}
顯然我誤解了一些根本性的東西。任何幫助將不勝感激!
我得到的錯誤是在構造函數的初始化列表中。
這裏是我實例化攝像頭:
Camera* camera;
D3DMATRIX matProjection, matView;
//called once
void Initialise(HWND hWnd)
{
initD3D(hWnd);
init_pipeline();
cube = new Cube();
level = new Level(*cube);
camera = new Camera(
45.0f, 1.0f, 10000.0f,
0.0f, 9.0f, 100.0f,
matProjection, matView);
test = 0.0f;
}
編譯器會告訴你這行中出現的錯誤。 –
在實例化一個'Camera'對象的地方顯示相關的代碼。 –