2016-06-01 132 views
-5

我正在編譯一個C++程序,但我不斷收到一些沒有意義的代碼行,然後在它的底部顯示」未定義的引用'菜單'「。我有一個.h文件和一個.cpp文件,在我的.h文件中定義了菜單功能,在我的.cpp文件中,我在頂部包含了我的.h文件,這也是我實現菜單功能的地方。是的,我在同一時間編譯它們錯誤:」未定義的引用'主''「

頭文件
#include <iostream> 
#include <cctype> 
#include <fstream> 
using namespace std; 

/* 
struct dog_park 
{ 
    char * name; 
    char * location; 
    char * description; 
    char * fence; 
    char * size; 

}; 
*/ 
class parks 
{ 

    public: 
     struct dog_park 
     { 
     char * name; 
     char * location; 
     char * description; 
     char * fence; 
     char * size; 
     }; 
     parks(); 
     int menu(); 
     bool display_all(); 
     void add_park(); 
     bool search_park(); 
     ~parks(); 

    private: 
     dog_park * all_parks; 
     int length; 


}; 
.cpp文件
//implementation of functions 

#include "cs162_parks.h" 

parks::parks() 
{ 
    all_parks = new dog_park[length]; 

} 

//allows for user to select what action to take 
int parks::menu() 
{ 
    int choice = 0; 
    cout << "Welcome to the menu, your choices to choose from are: " << endl << endl; 
    cout << "1. Add a dog park to list" << endl; 
    cout << "2. Search for specific park by name" << endl; 
    cout << "3. Display all dog parks" << endl; 
    cout << "4. Quit" << endl << endl; 
    cout << "What menu selection do you choose? (1-4): "; 
    cin >> choice; 
    cin.ignore(100, '\n'); 

    return choice; 
} 

parks::~parks() 
{ 
    if (all_parks) 
     delete [] all_parks; 
} 
+1

你有我們猜測,先生NewbieOverHere。爲什麼不以最小的可能形式重現問題(刪除不相關的東西但仍然存在問題),併發布文件的內容以及用於編譯的命令行? – slezica

+4

請在您的問題中包含相關的代碼位。另外,歡迎來到Stack Overflow!如果您想嘗試改善您的問題,請閱讀http://stackoverflow.com/help/how-to-ask。 – thesecretmaster

+0

「*這也是我實現我的菜單功能的地方*」好的,但是你在哪裏實現'main'?你忘了執行它了嗎? 「*是的,我正在同時編譯它們*」什麼「*他們*」?你只提到一個cpp文件。 – user2079303

回答

0

每個C++程序(一個普通的託管實現)需要一個main功能;它可以看起來像這樣:

int main() 
{ 
    // Top level statements 
} 

main在程序運行時自動調用。

有些事情準備工作必須在main之前完成。這些甚至包括程序員指定的東西。因此,調用main並不是程序中發生的第一次,即main不是程序的機器代碼級別入口點,但它是最重要的。