前向类声明:语法错误

时间:2017-09-10 12:05:46

标签: c++ class inheritance header-files turbo-c++

我在以下代码中收到声明语法错误:

fileio.h

class fileio;  //ERROR HERE: I'm trying to declare it so I can use it in read() function
int read(char* file_1);   //File Read Function

fileio.cpp

int read(char* file_1) {   //File Read Function
    fileio Object_1;
    int records_read=0;
    ifstream fin;
    fin.open(file_1, ios::binary);   //Opens the file again

    while(fin.read((char*)& Object_1, sizeof(Object_1))) { 
        records_read++;
        Object_1.show_tablular();
    }
    fin.close();
    return records_read;
}

Test.cpp的

template <class T>
void AddColumn(T data, const int& width) {
    cout<<setw(width)<<data<<" | ";
}

void Test_Class::show_tablular() {
    cout<<endl; AddColumn(record_id,7); AddColumn(char_member, 20); AddColumn(int_member, 11); AddColumn(float_member, 13);
}

在main()

 class fileio : public Test_Class {   //Trying to relate the 2 classes
  public:
     void show_tablular() {
         Test_Class::show_tablular(); 
     }
};

我不明白为什么会这样......

1 个答案:

答案 0 :(得分:0)

前向声明适用于解析声明中的指针和引用类型。

但是,编译器在编译函数时需要完整定义类型。