作爲我創建的類的一部分,我有一個表示常量緩衝區的結構。在接口文件(.h文件)中有一個getter函數,其返回類型與結構的相同。 .h文件中的函數原型被編譯器很好地識別,但是在函數定義中的實現文件(.cpp文件)中,編譯器將函數的返回類型用紅色標出,表示它是未定義的。頭文件包含在.cpp文件中,所以我不確定爲什麼函數的返回類型無法識別。下面是代碼:編譯器不識別實現文件中的類成員函數類型,但在接口文件中識別
對於頭文件:
#ifndef _PLAYERCLASS_H_
#define _PLAYERCLASS_H_
//Std library includes
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <math.h>
#include <vector>
#include <memory>
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dx10.h>
// include the Direct3D Library file
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")
class PlayerClass
{
private:
// a struct to define the constant buffer
struct CBUFFER
{
D3DXMATRIX Final;
D3DXMATRIX Rotation;
D3DXVECTOR4 LightVector;
D3DXCOLOR LightColor;
D3DXCOLOR AmbientColor;
};
public:
//Functions
PlayerClass(); //Constructor
~PlayerClass(); //Destructor
//Functions to set up player
//Getters
CBUFFER constBuff(); //Return the constant buffer
//Setters
private:
//Some private member variables
//Constant buffer to contain alterations to player etc
CBUFFER pUpdates;
};
#endif
對於cpp文件:
#include "Player.h"
#include <Windows.h>
PlayerClass::PlayerClass()
{
pUpdates.LightVector = D3DXVECTOR4(1.0f, 1.0f, 1.0f, 0.0f);
pUpdates.LightColor = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
pUpdates.AmbientColor = D3DXCOLOR(0.6f, 0.6f, 0.6f, 1.0f);
}
PlayerClass::~PlayerClass()
{
}
void PlayerClass::initPlayer()
{
}
CBUFFER PlayerClass::constBuff()
{
return pUpdates;
}
沒有正在識別的功能是最後的功能特別是CBUFFER一部分以紅色加下劃線。
嘗試'PlayerClass :: CBUFFER PlayerClass :: constBuff()' – 2015-02-06 00:43:03
這樣做 - 請問爲什麼它不能被識別?謝謝你的方式。 – Enchanter 2015-02-06 00:44:58
因爲'CBUFFER'是'PlayerClass'的一部分,所以你必須像在你的src文件中聲明'PlayerClass'函數一樣聲明它。 – 2015-02-06 00:46:43