0

我在Visual Studio中的工作與DirectX今天我已經得到了一些奇怪的編譯器錯誤沒有任何意義(至少對我來說)...VC++:奇怪的編譯器錯誤

這些都是我得到的錯誤:

錯誤C2143:語法錯誤:缺少';'之前'。' 錯誤C2059:語法錯誤:「)」

我仔細檢查過我的代碼,並沒有發現任何錯字/錯誤(我可能是錯的...)

我希望有人能告訴我是什麼錯誤通常意味着,在哪裏看......

我會把一些代碼下面那裏發生的錯誤,該行的指示(如果你想檢查)


額外信息: m_ImTexture2D是一個成員結構。 Vertex.PosTex是一個結構內的結構

GameManager.cpp: 

(231): error C2143: syntax error : missing ';' before '.' 
(231): error C2143: syntax error : missing ';' before '.' 
(232): error C2143: syntax error : missing ';' before '{' 
(233): error C2143: syntax error : missing ';' before '}' 
(233): error C2143: syntax error : missing ';' before ',' 
(234): error C2143: syntax error : missing ';' before '{' 
(234): error C2143: syntax error : missing ';' before '}' 
(234): error C2143: syntax error : missing ';' before ',' 
(235): error C2143: syntax error : missing ';' before '{' 
(235): error C2143: syntax error : missing ';' before '}' 
(235): error C2143: syntax error : missing ';' before ',' 
(237): error C2143: syntax error : missing ';' before '{' 
(237): error C2143: syntax error : missing ';' before '}' 
(237): error C2143: syntax error : missing ';' before ',' 
(238): error C2143: syntax error : missing ';' before '{' 
(238): error C2143: syntax error : missing ';' before '}' 
(238): error C2143: syntax error : missing ';' before ',' 
(239): error C2143: syntax error : missing ';' before '{' 
(239): error C2143: syntax error : missing ';' before '}' 
(246): error C2143: syntax error : missing ')' before '.' 
(246): error C2143: syntax error : missing ';' before '.' 
(246): error C2143: syntax error : missing ';' before '.' 
(246): error C2059: syntax error : ')' 
(249): error C2065: 'vertices' : undeclared identifier 

bool GameManager::GMLoadImage(Image** ppImage, const char* pkcFilePath, ImageDesc* pImDesc) 
{ 
    (*ppImage) = new Image(); 

    ID3D11ShaderResourceView** ppColorMap = (*ppImage)->GetppColorMap(); 


/// CREATE SHADER RESOURCE VIEW (from file) /// 
    HRESULT result = D3DX11CreateShaderResourceViewFromFileA(m_pDevice, 
                  pkcFilePath, 
                  0, 
                  0, 
                  ppColorMap, 
                  0); 
    if (FAILED(result)) { 
     MessageBoxA(NULL,"Error loading ShaderResourceView from file","Error",MB_OK); 
     return false; 
    } 


/// RECEIVE TEXTURE DESC /// 
    ID3D11Resource* pColorTex; 
    (*ppColorMap)->GetResource(&pColorTex); 
    ((ID3D11Texture2D*)pColorTex)->GetDesc(&((*ppImage)->GetColorTexDesc())); 
    pColorTex->Release(); 

/// CREATE VERTEX BUFFER /// 
    D3D11_TEXTURE2D_DESC colorTexDesc = (*ppImage)->GetColorTexDesc(); 
    float halfWidth = static_cast<float>(colorTexDesc.Width)/2.0f; 
    float halfHeight = static_cast<float>(colorTexDesc.Height)/2.0f; 

/*231*/ Vertex.PosTex vertices[]= 
/*232*/ { 
/*233*/  {XMFLOAT3(halfWidth, halfHeight, 1.0f), XMFLOAT2(1.0f, 0.0f)}, 
/*234*/  {XMFLOAT3(halfWidth, -halfHeight, 1.0f), XMFLOAT2(1.0f, 1.0f)}, 
/*235*/  {XMFLOAT3(-halfWidth, -halfHeight, 1.0f), XMFLOAT2(0.0f, 1.0f)}, 
/*236*/ 
/*237*/  {XMFLOAT3(-halfWidth, -halfHeight, 1.0f), XMFLOAT2(0.0f, 1.0f)}, 
/*238*/  {XMFLOAT3(-halfWidth, halfHeight, 1.0f), XMFLOAT2(0.0f, 0.0f)}, 
/*239*/  {XMFLOAT3(halfWidth, halfHeight, 1.0f), XMFLOAT2(1.0f, 0.0f)} 
     }; 

     D3D11_BUFFER_DESC vertexDesc; 
     ZeroMemory(&vertexDesc,sizeof(vertexDesc)); 
     vertexDesc.Usage = D3D11_USAGE_DEFAULT; 
     vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; 
/*246*/ vertexDesc.ByteWidth = sizeof(Vertex.PosTex)*6; 

     D3D11_SUBRESOURCE_DATA resourceData; 
/*249*/ resourceData.pSysMem = vertices; 

    ID3D11Buffer** ppVBuffer = (*ppImage)->GetppVertexBuffer(); 
    result = m_pDevice->CreateBuffer(&vertexDesc,&resourceData,ppVBuffer); 

    if (FAILED(result)) { 
     MessageBoxA(NULL,"Error Creating VBuffer","Error",MB_OK); 
     return false; 
    } 



/// SET POINTER TO IMAGEDESC 
    ImageDesc** ppThisImDesc = (*ppImage)->GetppImageDesc(); 
    (*ppThisImDesc) = pImDesc; 

    return true; 
} 

DxTetris.cpp:

(27): error C2143: syntax error : missing ')' before '.' 
(27): error C2143: syntax error : missing ';' before '.' 
(27): error C2143: syntax error : missing ';' before '.' 
(27): error C2059: syntax error : ')' 

bool DxTetris::LoadContent() 
{ 
    GameManager::GMInitSingleton(m_pD3DDevice,m_pD3DContext,m_pBackBufferTarget); 

    m_ImTexture2DDesc.Topology = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST; 
/*27*/m_ImTexture2DDesc.VertexSize = sizeof(Vertex.PosTex); 

    //.....(code goes on) 
} 
+1

結構體內的結構?你需要更深入。 –

+1

structception大聲笑:P – xcrypt

回答

6

在C++中,範圍解析運算符是::,不.;因此,您需要使用Vertex::PosTex而不是Vertex.PosTex

+0

感謝一堆!以前從未在結構中使用過結構... – xcrypt