2017-01-07 15 views
0

私はmakefileを試していますが、今は私にとってはうまくいきません。実験は簡単です:main.cppは、sayHello()という関数を持つロボットを生成し、それは "ロボットはhello"というメッセージを端末に出力します。これは私のファイル内のコードです。メイクファイルのコンストラクタで複数のクラスを使用しようとしたときにエラーが発生しました

robot.h:

#include <stdio.h> 
    class Robot(){ 

    public: 
      Robot(); 
    public: 
      void sayHello(); 

    }; 

robot.cpp

#include "robot.h" 

Robot::Robot() 
{ 
void Robot::sayHello(){ 
     printf("Robot says hello \r\n"); 
} 

}; 

main.cppに

#include <stdio.h> 
#include "robot.h" 


Robot robocop(); 
int main(void) 
{ 
     printf("hello world \r\n"); 
     robocop.sayHello(); 
     return 0; 
} 

エラーは以下の通りである:

robot.h:2 :13:エラー:予期しないIDの前に ')'が必要ですトークン class Robot(){ ^ main.cpp:関数 'int main()'内: main.cpp:9:10:エラー: 'robocop'内のメンバー 'sayHello'クラスタイプ 'Robot()' robocop.sayHello();

私はこれを長年試してきましたが、助けを借りることができました。ありがとう!

答えて

0

これはmakefileとは関係ありません。

robot.cppのクラスメソッド定義が間違っています。書かれているように、sayHello()メソッドは、奇妙なことに、クラスのコンストラクタの中に入れられています。これは正しくありません。私はこのようにそれを修正した

#include "robot.h" 

Robot::Robot() 
{ 
} 

void Robot::sayHello() 
{ 
     printf("Robot says hello \r\n"); 
} 
+0

ありがとう、私はそれを修正しました。 – Perijahh

0

:各クラスのメソッドは、コンストラクタを含め、個別に定義する必要があります

robot.h

#include <stdio.h> 
class Robot{ 

public: 
     Robot(); 
public: 
     void sayHello(); 

}; 

robot.cpp

#include "robot.h" 

Robot::Robot() 
{} 

void Robot::sayHello(){ 
     printf("Robot says hello \r\n"); 


} 

main.cpp

#include "robot.h" 


Robot robocop; 
int main(void) 
{ 

     robocop.sayHello(); 
     return 0; 
} 

助けてくれてありがとう!

0

メイン:

int main() 
{ 
Robot robocop; 
printf("hello world \r\n"); 
robocop.sayHello(); 
system("pause>nul"); 
return 0; 
} 

P.S:システムを使用する場合は注意してください()。この例では最も速いので使っていましたが、将来何かを使うことをお勧めします。このためにはうまくいくはずです。

ヘッダー:

class Robot { 

public: 
Robot(); 
void sayHello(); 
}; 

Robot.cpp:前述したように

Robot::Robot() 
{ 
return; 
} 
void Robot::sayHello() { 
    printf("Robot says hello \r\n"); 
    } 

かなり多く、あなたはそれが間違って書かれていました。私はC++の基礎についていくつかのチュートリアルを見ることをお勧めします。

関連する問題