2017-01-04 3 views
0

私はmain.cppファイルと、main.cppに含まれる他のcppファイルとヘッダファイルを持っています。ヘッダーファイルでは、#indef,#define#endifを適切な場所に使用し、ヘッダーファイルもmain.cppに含めました。しかし、私がメインファイルで作成した関数を使用しようとすると、 "Identifier(function_name)undefined"というエラーが表示されます。 EXのために識別子未定義のC++私はCPPとヘッダファイルを持っていますが、

//main.cpp 
#include "example.h" 

int main(){ 
foo(); 

//example.cpp 
example::foo(){ 
    //code 
} 

//example.h 
#ifndef EXAMPLE_H 
#define EXAMPLE_H 

class example{ 
int foo(); 
} 
#endif 

は私が間違って何をしているのですか?私は必要でないことをしていますか?

+2

'foo'が定義されていないため' foo() 'が失敗します。たぶんあなたは精神的に 'foo'と' example :: foo'を混同しているかもしれません。 –

+0

そしてその場合でも、 'foo'は' example'の 'private'です。したがって、(a)オブジェクトインスタンスなしで、そして(b)ある程度のfriendingを伴わずに' main'から呼び出すことは、私はあなたが[C + +上のまともな本](https://stackoverflow.com/search?q=%5Bcpp%5D+book)が必要だと思う – WhozCraig

答えて

2

foo();を呼び出すとこのエラーが発生します。 example::foo関数を呼び出すには、タイプexampleのオブジェクトが必要です。

class example { 
public: 
    void foo(); 
}; 

例:

は、私は次のプログラムがあるとします。

このように: mainはそれを使用することができるように

int main() { 
    example ex; 
    ex.foo(); 
} 

はまた、fooメソッドを公開する必要があります

void foo() { // #1 
    // typetype codecode; 
} 

class Example { 
public: 
    void foo(); 
}; 

Example::foo() { // #2 
    // typetype codecode; 
} 

int main() { 
    Example ex; 

    foo(); // #1 gets called 
    ex.foo(); // #2 gets called on object ex 
} 

詳細情報:

この種のことを理解するには、オブジェクト指向プログラミングとクラスについて学ぶ必要があります。 OOPについての説明は、これらのサイトを含める:

私はあなたがOOPについて説明する多くのサイトを見つけることができると確信しています。

関連する問題