プロが教える店舗&オフィスのセキュリティ対策術

以下のプログラムにおいて、後者のコンパイルが通りません。
違いは、クラス:Kurasu のコンストラクタに引数があるかないかで、
全部で3行違います。

後者のどこが問題か指摘して欲しいです。(さっぱりわからない…。)

試した環境は、
Visual C++ 2010 Express + インストーラー配布のboostと、
Eclipse 3.5.2 Galileo Windows 32bit ベース / Pleiades All in One 3.5.2.20100226 のUltimate+←を使ってソースをビルドしたboostです。
boostのバージョンは、1.46.1です。
--------------------------------------------------
#include <iostream>
#include <boost/thread.hpp>
using namespace std;
using namespace boost;
class Kurasu {
public:
Kurasu(int ababa){};
void run(){ for( int i = 0; i < 10; i++ ){ cout <<"foo "; } };
};
int main()
{
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
Kurasu hoge(1);
Kurasu piyo(2);
thread thr_hoge( &Kurasu::run, &hoge );
thread thr_piyo( &Kurasu::run, &piyo );
thr_hoge.join();
thr_piyo.join();
return 0;
}
--------------------------------------------------
#include <iostream>
#include <boost/thread.hpp>
using namespace std;
using namespace boost;
class Kurasu {
public:
Kurasu(){};
void run(){ for( int i = 0; i < 10; i++ ){ cout <<"foo "; } };
};
int main()
{
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
Kurasu hoge();
Kurasu piyo();
thread thr_hoge( &Kurasu::run, &hoge );
thread thr_piyo( &Kurasu::run, &piyo );
thr_hoge.join();
thr_piyo.join();
return 0;
}
--------------------------------------------------

A 回答 (4件)

「Kurasu型の戻り値を持って、引数が無い関数hogeを宣言している」で正解.


まあよくあるパターンだしね.

いずれにしても, エラーメッセージは理解できるようにしたほうがいいだろうねぇ. 何かあるたびに人に聞けるわけじゃないでしょ?
    • good
    • 0
この回答へのお礼

再度、ありがとうございます。

メッセージは型がおかしいと言われているのはわかったのですが、どうおかしいのかさっぱり理解できませんでした。
Visual C++の方はまだわかりやすい記述だったので今後は何とか善処してみたいです。

お礼日時:2011/06/13 18:54

×


Kurasu hoge();
Kurasu piyo();
↑これではKurasu型の戻り値をもつ関数のプロトタイプ宣言になってしまいます。


Kurasu hoge;
Kurasu piyo;
    • good
    • 0
この回答へのお礼

レスありがとうございます。

必要になったところから覚えて行ってアプリを作ろうと思っていたのですけど、
本かWebかで、一通り学習すべきなのかも知れません。

お礼日時:2011/06/13 19:00

> メッセージは難しくて理解できませんでした、というかする気が起きませんでした。



お願いだから、理解する努力はして。
わからないときは、その文章で検索してみて。
質問するときに一緒に貼り付けて。

プログラミング上達のコツですよ。
    • good
    • 0

まずは表示されるメッセージをきちんと確認すること.



Kurasu hoge();
の意味はわかりますか?

この回答への補足

まさに的確な指摘ありがとうございます。

今調べている最中なので、後で改めてレスします。
Kurasu hoge;としたら出来ました。
メッセージは難しくて理解できませんでした、というかする気が起きませんでした。

補足日時:2011/06/13 00:26
    • good
    • 0
この回答へのお礼

>の意味はわかりますか?
わかりませんでした。
始めは、スタック上にKurasu型のhogeというインスタンスをコンストラクタへの引数は0で作成する、という意味だと思ってました。

「Kurasu hoge();」は何なのでしょうか?
Kurasu型の戻り値を持って、引数が無い関数hogeを宣言しています?

もう少し調べてみます。ありがとうございます。

お礼日時:2011/06/13 01:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!