2013-06-02 61 views
2

有没有人有关于如何解决此问题的任何想法?我在网上查看并更改了我的Visual C++设置,但它仍然无效。错误LNK2019:函数中引用的无法解析的外部符号_main visual C++

class store 
{ 
public: 
    int MainMenu(); 
    store(); 
private: 
    int main; 
}; 

class customer:store 
{ 
public: 
    int CustomerMenu(); 
    customer(); 
private: 
    int cmenu; 
}; 

class employee:store 
{ 
public: 
    int EmployeeMenu(); 
    employee(); 
private: 
    int emenu; 

}; 

int main() 
{ 
    int main; 
    store a; 
    customer b; 
employee c; 
a.MainMenu(); 
if(main = 1) 
{ 
    c.EmployeeMenu(); 
} 
else if(main = 2) 
{ 
    b.CustomerMenu(); 
} 
else 
{ 
    exit(EXIT_SUCCESS); 
} 
} 

int MainMenu() 
{ 
    int main; 
cout << "Choose an option: " << endl; 
cout << " 1. Administration menu" << endl; 
cout << " 2. Customer menu" << endl; 
cout << " 3. Exit the program" << endl; 
cin >> main; 
return main; 
} 

int CustomerMenu() 
{ 
int cmenu; 
cout << " 1. Search Video" << endl; 
cout << " 2. View Video Titles" << endl; 
cout << " 3. Rent Video" << endl; 
cout << " 4. Exit to the Main Menu" << endl; 
cout << " 5. Exit the program" << endl; 
cin >> cmenu; 
return cmenu; 

} 

int EmployeeMenu() 
{ 
int emenu; 
    cout << " 1. Store Information menu" << endl; 
    cout << " 2. Merchandise Information menu" << endl; 
    cout << " 3. Category Information menu" << endl; 
    cout << " 4. Customer Information menu" << endl; 
    cout << " 5. Employee Information menu" << endl; 
    cout << " 6. Rent a Video" << endl; 
    cout << " 7. Restock Video" << endl; 
    cout << " 8. Sales menu" << endl; 
    cout << " 9. Exit to Main Menu" << endl; 
    cout << " 10. Exit the program" << endl; 
cin >> emenu; 
return emenu; 

} 

store::store() 
{ 
main = 0; 
} 

customer::customer() 
{ 
cmenu = 0; 
} 

employee::employee() 
{ 
emenu = 0; 
} 

它给我:

Store.obj : error LNK2019: unresolved external symbol "public: int __thiscall customer::CustomerMenu(void)" ([email protected]@@QAEHXZ) referenced in function _main 
1>Store.obj : error LNK2019: unresolved external symbol "public: int __thiscall employee::EmployeeMenu(void)" ([email protected]@@QAEHXZ) referenced in function _main 
1>Store.obj : error LNK2019: unresolved external symbol "public: int __thiscall store::MainMenu(void)" ([email protected]@@QAEHXZ) referenced in function _main 
+0

为什么你有一个名为'main'的变量? – Elazar

+0

更不用说'if(main = 1)'永远是真的。你的意思是'=='。 – Elazar

回答

4

您正在实施CustomerMenu()EmployeeMenu()作为正常功能,而不是类成员。实施应该是;

int customer::CustomerMenu() 
{ 
... 

int employee::EmployeeMenu() 
{ 
... 
+0

非常感谢! – Tiffany

1
if(main = 1) 
{ //^^should be ==, same as the one below 
    c.EmployeeMenu(); 
} 
else if(main = 2) 
{ 
    b.CustomerMenu(); 
} 

成员函数应具有范围解析操作符来定义:

int CustomerMenu() 

应该是:

int Customer::ustomerMenu() 

小点:

class employee:store 

在这里,您使用private inheritance,你真的需要想想你是否需要与否。

+0

(OP是新手,显然他*不需要私有继承。) 语法应该是'class employee:public store'。但'雇员'从'store'继承是不太可能的。 – Elazar

+0

@Elazar我完全同意你的看法。 – taocp

+0

感谢你们双方的意见。正如Elazar声称我是初学者。 – Tiffany

1

您的成员函数实现需要正确定义。例如:

int CustomerMenu() 

应该是:

int customer::CustomerMenu(void) 

等等。

相关问题