2017-04-10 12 views
-2

宿題の手助けが必要です。私はC++の新機能ですが、私は理解していないエラーが発生しています。ここに私のコードは次のとおりです。C++関数にエラーが発生する

/* 
* homework6.cpp 
* Coder: omega9380 
* Final Project 
*/ 

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

int main() { 

    void welcomeScreen(); 
    void printLine(int length); 

    welcomeScreen(); 

    return 0; 
} 

void welcomeScreen() { 
    string userName = ""; 
    string title1 = "CMPSC101 FINAL PROJECT"; 
    string title2 = "CREATED BY: OMEGA9380"; 

    // Welcome screen: 

    system("CLS"); 

    cout << "/"; 
    printLine(80); 
    cout << "\\" << endl; 
    cout << "|" << setw(81) << "|" << endl; 
    cout << "|" << setw(41 + (title1.length()/2)) << title1 << setw(40 - (title1.length()/2)) << "|" << endl; 
    cout << "|" << setw(41 + (title2.length()/2)) << title2 << setw(40 - (title2.length()/2)) << "|" << endl; 
    cout << "|" << setw(81) << "|" << endl; 
    cout << "\\"; 
    printLine(80); 
    cout << "/" << endl; 
} 

void printLine(int length) { 
    for (int i = 0; i < length; i++) { 
     cout << "="; 
    } 
} 

エラーがされ、「エラー: 『プリントライン』がこのスコープで宣言されていませんでした」。私はmain()関数で "printLine()"を宣言しましたが、それで十分ではありませんか?または、私はそれを使用する予定のすべての関数で関数名を宣言する必要がありますか?そして燃える質問に答えるために、私はこの最終プロジェクトで関数を使用しなければなりません。ありがとう!!!

+2

は宣言を前方に追加したり、機能を上に移動します。 –

+0

他の関数の外で関数を宣言することが容易になります。 – aschepler

+1

キーは "this scope"で、 'void printLine(int length);'は 'main'の中で宣言されているので、' main'のスコープ内でしか見えません。 – user4581301

答えて

3

の宣言を行うべきです

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

int printLine(int); 
void welcomeScreen(); 

int main() { 
    welcomeScreen(); 
    return 0; 
} 

void welcomeScreen() { 
    // definition 
} 

void printLine(int length) { 
    // definition 
} 

またはちょうどメインの前にそれらを定義します:

前方welcomeScreenとプリントライン関数を宣言
#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

int printLine(int length) { 
    //definition 
} 

void welcomeScreen() { 
    // definition 
} 

int main() { 
    welcomeScreen(); 
    return 0; 
} 
+0

それはそれを修正しました。 main()の外で変数や関数を宣言できることはわかりませんでした。ありがとう!! –

+0

@JeremyKelloggもちろんできます!あなたは歓迎された友人です。何か質問があれば私に連絡してください、私は喜んで助けます。 –

-1

あなたの関数の宣言を持っているので、このようにそれを使用し `tを:

/* 
* homework6.cpp 
* Coder: omega9380 
* Final Project 
*/ 

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

void welcomeScreen() { 
    string userName = ""; 
    string title1 = "CMPSC101 FINAL PROJECT"; 
    string title2 = "CREATED BY: OMEGA9380"; 

    // Welcome screen: 

    system("CLS"); 

    cout << "/"; 
    printLine(80); 
    cout << "\\" << endl; 
    cout << "|" << setw(81) << "|" << endl; 
    cout << "|" << setw(41 + (title1.length()/2)) << title1 << setw(40 - (title1.length()/2)) << "|" << endl; 
    cout << "|" << setw(41 + (title2.length()/2)) << title2 << setw(40 - (title2.length()/2)) << "|" << endl; 
    cout << "|" << setw(81) << "|" << endl; 
    cout << "\\"; 
    printLine(80); 
    cout << "/" << endl; 
} 

void printLine(int length) { 
    for (int i = 0; i < length; i++) { 
     cout << "="; 
    } 
} 

int main() { 

    void welcomeScreen(); 
    void printLine(int length); 

    welcomeScreen(); 

    return 0; 
} 
+0

誰かが-1を得るのを助けてください、あなた達は信じられません。 –

1

あなたはmain()機能の範囲内でprintLine()関数を宣言しています。この宣言は、welcomeScreen()の定義では見られません。

mainprintLine外の宣言を移動

welcomeScreen

前にも同じことがあなたが本当にメインで宣言された関数を持ってしたくないあなたのいずれかがする必要があると仮定すると、welcomeScreen

+0

@ user4581301本当に、私の答えを編集しました、ありがとう:) – Rogus

+0

あなたの答えは正しいです。ちょうど改善の余地があった。なぜそれが下落したのか分かりません。 – user4581301

+0

私もどちらでもないが何をすることができるか私はこの質問に答えた人はどれもdownvoted – Rogus

2

あなたのprintLine関数はmainで宣言されているだけなので、welcomeScreen関数はそれを見ることができません。

mainの前にwelcomeScreen関数とprintLine関数を移動し、printLineがwelcomeScreenより前にあるようにして、welcomeScreenが呼び出す前に存在することを確認する必要があります。このよう

/* 
* homework6.cpp 
* Coder: omega9380 
* Final Project 
*/ 

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

void printLine(int length) { 
    for (int i = 0; i < length; i++) { 
     cout << "="; 
    } 
} 

void welcomeScreen(void) { 
    string userName = ""; 
    string title1 = "CMPSC101 FINAL PROJECT"; 
    string title2 = "CREATED BY: OMEGA9380"; 

    // Welcome screen: 

    system("CLS"); 

    cout << "/"; 
    printLine(80); 
    cout << "\\" << endl; 
    cout << "|" << setw(81) << "|" << endl; 
    cout << "|" << setw(41 + (title1.length()/2)) << title1 << setw(40 - (title1.length()/2)) << "|" << endl; 
    cout << "|" << setw(41 + (title2.length()/2)) << title2 << setw(40 - (title2.length()/2)) << "|" << endl; 
    cout << "|" << setw(81) << "|" << endl; 
    cout << "\\"; 
    printLine(80); 
    cout << "/" << endl; 
} 

int main() { 

    welcomeScreen(); 

    return 0; 
} 
関連する問題