2012-10-12 56 views
0

我收到错误:C++成员函数未声明错误,当它似乎是

cs163hw1.cpp:41:24:错误:类声明无 '诠释menutype :: run_prog()' 的成员函数' menutype”

的main.cpp:18:7:错误: '结构menutype' 没有名为成员 'run_prog'

当试图编译我的程序与相关的代码(跨越appriprait .cpp和.h文件):

int main(int argc, char ** argv){ 
... 
menu.run_prog(); 
... 

class menutype{ 
public: 
    menutype(int); 
    int display(); 
    int run_prog(); 
private: 
    extras list; 
    person menup; 
}; 

int menutype::run_prog(){ 
bool exit = false; 
int input; 
while(!exit){ 
    input = 0; 
    while(input < 1 || input > 4) 
     input = display(); 
    switch(input){ 
     case 1 : 
      break; 
     case 2 : 
      break; 
     case 3 : 
      break; 
     case 4 : exit = true; 
      break; 
     default : 
      break; 
    } 
} 
} 

我不知道为什么会发生这种情况,有什么猜测?

+2

我的猜测是你在类定义之前调用'menu.run_prog()'。事实上,我认为*是问题。 – 0x499602D2

+0

你可以在你的文章中包含每个.cpp文件的#includes吗?另外,您的头文件中是否包含可能与另一个头冲突的包含守护(例如#ifdef宏)? –

+0

@詹姆斯比尔比,标头守卫是'#ifndef'。 – chris

回答

0

您需要在main()之上声明class menutype。更好的做法是把这个类移动到它自己的专用文件menutype.cpp中,并将头文件包含在main的源文件中。正如你所描述的那样,编译器没有menutype的知识,但它从文件顶部解析源文件。