C++ 错误包括<;向量>;在Netbeans中(C+;+;)

C++ 错误包括<;向量>;在Netbeans中(C+;+;),c++,netbeans,vector,cygwin,C++,Netbeans,Vector,Cygwin,这很奇怪。我因为包含:(编辑:使用可以很好地工作,但我不想放弃向量) g++.exe-c-g-MMD-MP-MF build/Debug/Cygwin Windows/main.o.d-o build/Debug/Cygwin Windows/main.o main.cpp 来自MemoryScanner.h:11, 来自main.cpp:10: /usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:在成员函数“void

这很奇怪。我因为包含
:(编辑:使用
可以很好地工作,但我不想放弃向量)

g++.exe-c-g-MMD-MP-MF build/Debug/Cygwin Windows/main.o.d-o build/Debug/Cygwin Windows/main.o main.cpp
来自MemoryScanner.h:11,
来自main.cpp:10:
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:在成员函数“void std::vector::_M_insert_range(std:_Bit_iterator,_ForwardIterator,_ForwardIterator,std::forward_iterator_tag)”中:
在/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/vector:72中包含的文件中,
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:522:错误:在“(”标记之前应该有不合格的id
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:在成员函数“void std::vector::_M_fill_insert(std:_Bit_iterator,size_t,bool)”中:
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_bvector.h:823:错误:在“(”标记之前应为非限定id
来自MemoryScanner.h:11,
来自main.cpp:10:
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:在成员函数'void std::vector::_M_fill_insert(u gnu_cxx::u normal_迭代器,size_t,const Tp&'):
在/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/vector:75中包含的文件中,
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:307:错误:在“(”标记之前应为非限定id
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:在成员函数“void std::vector::_M_range_insert”(u gnu_cxx::u normal_iterator,_ForwardIterator,_ForwardIterator,std::forward_iterator_tag):
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/vector.tcc:384:错误:在“(”tokenmake[2]:离开目录“/cygdrive/k/Documents and Settings/Administrator/My Documents/NetBeansProjects/MemScan”之前应为非限定id
make[1]:离开目录“/cygdrive/k/Documents and Settings/Administrator/My Documents/NetBeansProjects/MemScan”
生成[2]:***[build/Debug/Cygwin-Windows/main.o]错误1
生成[1]:***[.build conf]错误2
make:**[.build impl]错误2
生成失败(退出值2,总时间:1s)
引用的行:

#include "MemoryScanner.h" // main.cpp:10

#include <vector> // MemoryScanner.h:12
#包括“MemoryScanner.h”//main.cpp:10
#包括//MemoryScanner.h:12
编辑:

MemoryScanner.h

#ifndef MEMORYSCANNER_H
#define MEMORYSCANNER_H

#include <vector>
#include <windows.h>

using namespace std;

struct memblock {
    int address;
    int value;
};

class MemoryScanner {
private:
    HANDLE _hProc;
    vector<memblock> _addresses;
public:
    MemoryScanner(HANDLE hProc);
    MemoryScanner(const MemoryScanner& orig);
    void scan(int value);
    void display();
    virtual ~MemoryScanner();
};

#endif  /* MEMORYSCANNER_H */
\ifndef MEMORYSCANNER\u H
#定义内存扫描程序
#包括
#包括
使用名称空间std;
结构内存块{
int地址;
int值;
};
类记忆扫描仪{
私人:
HANDLE_hProc;
矢量地址;
公众:
记忆扫描仪(处理hProc);
记忆扫描仪(常量记忆扫描仪和原始扫描仪);
无效扫描(int值);
void display();
虚拟~MemoryScanner();
};
#endif/*内存扫描程序*/
main.cpp

#include <iostream>
#include <windows.h>
#include "MemoryScanner.h"

using namespace std;

int main(int argc, char** argv) {
    HWND hWnd = FindWindow(0, "Calculator");

    if (hWnd == 0) {
        cout << "Could not retrieve window handler" << endl;
    } else {
        DWORD pid;
        GetWindowThreadProcessId(hWnd, &pid);
        HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);

        if (!hProc) {
            cout << "Could not open process" << endl;
        } else {
            MemoryScanner* scanner = new MemoryScanner(hProc);

            int value;
            cout << "Enter value: ";
            cin >> dec >> value;
            scanner->scan(value);
            scanner->display();
        }
    }

    return 0;
}
#包括
#包括
#包括“MemoryScanner.h”
使用名称空间std;
int main(int argc,字符**argv){
HWND HWND=FindWindow(0,“计算器”);
如果(hWnd==0){
cout扫描(数值);
扫描仪->显示();
}
}
返回0;
}
可能MemoryScanner.h定义了一个宏,该宏恰好与vector头使用的名称匹配。您看过vector和stl_bvector.h中的代码行了吗


在包含特定于项目的头文件之前,我尝试先包含系统头文件和外部库头文件,以便在出现问题时,编译器更有可能指向我有权更改的文件。

/Facepalm。我只需要从
main.cpp
中删除
\include
,因为它已经包含在
备忘录中ryScanner.h

我们能看看你是如何在代码中使用向量的吗?从MemoryScanner.hc发布一些代码,我们可以知道编译器错误的其余部分吗?@Gio Borje:为什么有这么多编译器选项?看起来你的问题是那些…而不是代码本身:-W编译器选项有什么问题吗?我今天刚得到了Netbeans,并按照教程使用了cygwin作为它的编译器。
#include <iostream>
#include <windows.h>
#include "MemoryScanner.h"

using namespace std;

int main(int argc, char** argv) {
    HWND hWnd = FindWindow(0, "Calculator");

    if (hWnd == 0) {
        cout << "Could not retrieve window handler" << endl;
    } else {
        DWORD pid;
        GetWindowThreadProcessId(hWnd, &pid);
        HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);

        if (!hProc) {
            cout << "Could not open process" << endl;
        } else {
            MemoryScanner* scanner = new MemoryScanner(hProc);

            int value;
            cout << "Enter value: ";
            cin >> dec >> value;
            scanner->scan(value);
            scanner->display();
        }
    }

    return 0;
}