成员声明中不允许使用C ++限定名称

时间:2018-01-15 01:06:17

标签: c++ error-handling directx direct3d

我正在关注2012年的一个Fleeps旧教程。我遇到了一个speedbump,这个错误:成员声明中不允许使用限定名称。 我试过更改SDK,在main.cpp文件中定义/声明类。这些都没有奏效。 这是我的头文件,我遇到了错误。

#pragma once

#include <Windows.h>
#include "d3d9.h"
#include <ctime>
#include <iostream>

#define D3DHOOK_TEXTURES
#define MAX_MENU_ITEMS 6
#define WALLHACK 0
#define CUSTOM_CROSSHAIR 1
#define NO_RECOIL 2
#define UNLIM_AMMO 3
#define AUTO_FIRE 4
#define HIDE_MENU 5

class Hacks {
public:
    int m_Stride;

    void Hacks::CreateFont(IDirect3DDevice9 *d3dDevice, std::string choiceFont);
    void Hacks::InitializeMenuItems();
    void Hacks::DrawText(LPCSTR TextToDraw, int x, int y, D3DCOLOR Color);
    void Hacks::DrawMenu(IDirect3DDevice9 *d3dDevice);
    void Hacks::DrawFilledRectangle(int x, int y, int w, int h, D3DCOLOR Color, IDirect3DDevice9 *d3dDevice);
    void Hacks::DrawBorderBox(int x, int y, int w, int h, int thickness, D3DCOLOR Color, IDirect3DDevice9 *d3dDevice);
    void Hacks::KeyboardInput();

    LPDIRECT3DTEXTURE9 texRed;
    LPDIRECT3DTEXTURE9 texGreen;
    LPDIRECT3DTEXTURE9 texBlue;
    LPDIRECT3DTEXTURE9 texWhite;

    D3DVIEWPORT9 ViewPort;

    LPD3DXFONT Font;

    struct d3dMenuHack {
        bool on;
        std::string name;
    };

    d3dMenuHack hack[MAX_MENU_ITEMS];
};

当我宣布&#34; void Hacks ::&#34; ...函数时,错误正在逐渐消失。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

也许乍一看nikau6的答案并不十分清楚,因为该代码似乎与OP中的代码相同。

因此,解决方案是从所有声明中删除 Hacks ::

答案 1 :(得分:1)

在成员声明中不使用限定名称。你的书中使用了哪种编译器?

class Hacks {
    public:
        int m_Stride;

        void CreateFont(IDirect3DDevice9 *d3dDevice, std::string choiceFont);
        void InitializeMenuItems();
        void DrawText(LPCSTR TextToDraw, int x, int y, D3DCOLOR Color);
        void DrawMenu(IDirect3DDevice9 *d3dDevice);
        void DrawFilledRectangle(int x, int y, int w, int h, D3DCOLOR Color, IDirect3DDevice9 *d3dDevice);
        void DrawBorderBox(int x, int y, int w, int h, int thickness, D3DCOLOR Color, IDirect3DDevice9 *d3dDevice);
        void KeyboardInput();

        LPDIRECT3DTEXTURE9 texRed;
        LPDIRECT3DTEXTURE9 texGreen;
        LPDIRECT3DTEXTURE9 texBlue;
        LPDIRECT3DTEXTURE9 texWhite;

        D3DVIEWPORT9 ViewPort;

        LPD3DXFONT Font;

        struct d3dMenuHack {
            bool on;
            std::string name;
        };

        d3dMenuHack hack[MAX_MENU_ITEMS];
    };

答案 2 :(得分:0)

在Visual Studio 2019中构建旧版Direct Show筛选器时,我必须将Conformance Mode设置为No。这使代码不符合标准/permissive-

以上是一些人所说的不良实践。但是对于遗留代码,通常不适合(或不可能)使其遵循最佳实践。