C ++错误:字段有不完整的类型'int []'

时间:2014-04-25 19:59:28

标签: c++ arrays int virtual-machine virtual

我正在用C ++制作一个虚拟机,我遇到了这个错误,

error: field has incomplete type 'int []' int instrarr[];

我完全不知道int数组有什么问题。有人可以看看,让我知道我做错了什么,我已经看了一个多小时,我似乎无法找到我必须遗漏的细节。我的整个文件都在下面,你需要它作为参考。

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

using namespace std;

class vm {
    private:

        string finfo;
        string filedata;
        string fconv;
        string instruction;

        int instrarr[];
        int zerocount[];

    public:

        /* Helper functions */

        int countinstrs(string s) {
            int count = 0;

            for (int i = 0; i < s.size(); i++)
                if (s[i] == ',') count++;

                return count;
        }

        int countlzeros(string s) {
            int count = 0;

            for (int i = 0; i < s.size(); i++)
                if (s[i] == '0') {
                    count++;
                } else {
                    i = s.size() + 1;
                }
            return count;
        }

        string load_program(string file) {
            ifstream rdfile(file);
                while(rdfile >> instruction) {
                    filedata += instruction;
                    filedata += ",";
                }
            rdfile.close();
            return filedata;
        }

        string convert_program(string fconv) {
            int instrcount = countinstrs(fconv);
            stringstream hextoint;
            unsigned int value;
            string s = fconv;
            string delimiter = ",";
            size_t pos = 0;
            string token;
            int i = 0;
            while ((pos = s.find(delimiter)) != string::npos) {
                token = s.substr(0, pos);
                int zeroc = countlzeros(token);
                //zerocount[i] = zeroc;
                stringstream hextoint(token);
                hextoint >> hex >> value;
                //instrarr[i] = value;
                cout << value << endl;
                s.erase(0, pos + delimiter.length());
                i++;
            }
            return "";
        }

        void run_program(string file) {
            finfo = load_program(file);
            fconv = convert_program(finfo);
            //execute_program();
        }
};

int main(int argc, char* argv[]) {

    vm rd;
    rd.run_program(argv[1]);
    return 0;

}

1 个答案:

答案 0 :(得分:10)

非常简单,int[]是一种不完整的类型,因为它缺少有关它的大小的信息。在函数调用参数中,它与声明指针而不是数组同义,但对于定义,如在代码中,编译器当然需要知道数组的大小,以便为它分配存储空间。