main里面还有
#include "list.h"
#include "slist.h"

解决方案 »

  1.   

    试试 slist l;l.InitList();
    另外,你的list::InitList()会不会是个纯虚呢?
      

  2.   

    问题在于,我把"#include slist.h"注释掉了,就可以执行了阿
      

  3.   

    我更加简化了三个文件: 
    list.h: 
    class List 

        public: 
            virtual void InitList(); 
    }; 
    slist.h: 
    #include "list.h" 
    class sList: public List 
    {}; 
    main.cpp 
    #include "list.h" 
    #include "sqlist.h" 
    main() 
    {   return 0; 

    只出一个错误就是: 
    e:\list.h(4) : error C2011: 'List' : 'class' type redefinition 
    为什么啊?!! 
    我是新建的console工程.
      

  4.   

    看看mfc生成的程序的代码,你就会发现mfc是如何避免头文件的重复定义了,比如#ifndef..#else...#endif这些预编译指令
      

  5.   

    在main.cpp中就不要再#include "list.h"了,因为 你已经#include "slist.h"了,而在
    slist.h中又#include " list.h"所以,你不在main.cpp 中再#include "list.h"就搞了两次,当然会出现重复定义的错误了。