VisualC++6.0 SDI でプログラムの勉強をしています。
マルチスレッドから int型 の整数を受け渡ししたいのですが、
「'identifier' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。」
とエラーが出てしまいます。どうしたらよいでしょうか?
どのような処理をしているのか抜き出しました。
見難い上に、私の理解が不十分なため必要な記述が抜けているかもしれませんが、
指摘、アドバイスなどよろしくお願いします。
//マルチスレッドの中に記述し int count の整数を受け渡す記述
//pInst は class CSerialへのポインタ
for(count =0; count<3; count++){
pInst->TransmitData(count);
処理;//ここで int count を使いたい。
}
// class Serial
class CSerial
{
public:
CSerial(CEvent *Event);
~CSerial(void);
private:
void TransmitData(int count);
};
// 継承?? オーバーライド?? はっきりとは理解できていません。
void CSerial::TransmitData(int count)
{//m_Eventは class Event へのポインタ
m_Event->OnPollingSend(count);
}
// Class Event
class CEvent
{
public:
CEvent()
{
}
virtual ~CEvent()
{
}
virtual void OnPollingSend(int count) = 0;
};
//Class Event が書かれているファイルを#includeしています。
void CPollingDlg::OnPollingSend(int count)
{
マルチスレッドスタート;//すでにスタートしていたらジャンプ
処理;//ここで int count を使いたい
}
//ボタンはclassWizard で作りました(INT)は後から付けてしてみました。
//ボタンが押されたら呼び出されます。
ON_BN_CLICKED(ID_POLLING_SEND, OnPollingSend(INT))
// 生成されたメッセージ マップ関数
afx_msg void OnPollingSend(INT);
No.2ベストアンサー
- 回答日時:
>継承?? オーバーライド?? はっきりとは理解できていません。
virtual void OnPollingSend(int count) = 0;は純粋仮想関数ですが
それを理解するために継承やオーバーライドの事を理解する必要があります。
まずそこを書籍等で学習してください。
CEvent::OnPollingSendが純粋仮想関数のようですが
なにも実装されていないのに
m_Event->OnPollingSend(count);
としています。
これではコンパイルが通りません。
ここでvoid CPollingDlg::OnPollingSend(int count) が呼ばれると思っていませんか?
マルチスレッド化の前に、まずコンパイルエラーを無くす方が先決です。
アドバイスありがとうございます。
書籍やネットで調べプログラムを作りながら継承などを学習しようと思っていましたが、甘かったようです。。
>ここでvoid CPollingDlg::OnPollingSend(int count) が呼ばれると思っていませんか?
全くその通りです。呼ばれると思っていました。
クラスへのポインタをアクセスすれば良いと思っていました。やっぱり中身がないとダメなんですね。
No.1
- 回答日時:
virtual void OnPollingSend(int count) = 0;
これは、どういう事がしたいんでしょうか?
この回答への補足
私が書いているこれはRS-232Cを使ったデータの送受信を行うプログラムで、
ネット上に公開されていたサンプルプログラムの、受信のみを行うスレッドを、
ストップボタンが押されるまで、送信→受信→送信→
と繰り返される”送受信”スレッドにしようと色々試しているものです。
今回質問させていただいた物は送信ループのつもり?のものを抜粋したものでした。
受信ループは同じように記述して(たぶん)成功したので、同じように書きました。
受信ループはこのようになっております。
//pInst は class CSerialへのポインタ
for(count =0; count<3; count++){
ダイアログボックスのデータを送信する処理;
受信処理;
//pInstはclass CSerialへのポインタ
pInst->ReceiveData(str, dwRead, count);//ダイアログで受信データ書き込み処理
}
class CSerial
{
public:
CSerial(CEvent *Event);
~CSerial(void);
private:
void ReceiveData(LPCSTR str, DWORD strLength, int count);
};
// 受信時のイベントを投げる
void CSerial::ReceiveData(LPCSTR str, DWORD strLength, int count)
{ //m_Eventは class Event へのポインタ
m_Event->OnReceive(str, strLength, count);
}
// イベントを受信する場合、このクラスを継承して
// OnReceive()をオーバーライド実装してください.
class CEvent
{
public:
CEvent()
{
}
virtual ~CEvent()
{
}
virtual void OnReceive(LPCSTR str, DWORD strLength, int count) = 0;
};
//Class Event が書かれているファイルを#includeしています。
void CPollingDlg::OnReceive(LPCSTR str, DWORD strLength, int count)
{
処理;//ここで int count を使いたい
}
//OnReceive関数の宣言
void OnReceive(LPCSTR str,DWORD strLength, int count);
私がやりたいことは、送受信スレッドから、整数値をダイアログボックス
に送るループを作りたいと言うことです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
静的でないメンバ関数の呼び出...
-
C++にてtemplateで受け取った任...
-
int main()、void main()、void...
-
【gcc・cygwin】multiple defin...
-
多重定義が起きている?--lnk20...
-
戻り値を返す関数の前に(void)...
-
const_castのつかいどころを教...
-
ArduinoでMouse関数を使用して...
-
c言語。5枚のカードの中に2枚同...
-
Notepad++の関数リスト表示の変...
-
C言語 プロトタイプ宣言
-
C++別のオブジェクトからメンバ...
-
コントロールへのイベント定義...
-
ウインドウの移動禁止
-
VC++でGetKeyboardStateがうま...
-
メッセージマップ(ON_CONTROL_...
-
プログラムを教えてください。...
-
コールバックって・・・
-
AKI-h8 3069f C言語 HEW マイ...
-
stddef.hって何?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
【gcc・cygwin】multiple defin...
-
戻り値を返す関数の前に(void)...
-
多重定義が起きている?--lnk20...
-
C++にてtemplateで受け取った任...
-
既定のコンストラクタがありま...
-
静的でないメンバ関数の呼び出...
-
gcc: incompatible pointer type
-
C# Controls.Addで動的に配置し...
-
int main()、void main()、void...
-
(void)0 はどんな意味ですか
-
VC++でGetKeyboardStateがうま...
-
void*型の配列について
-
C# KeyDownイベントでショート...
-
const_castのつかいどころを教...
-
H8マイコンのシリアル通信につ...
-
コールバックって・・・
-
関数ポインタについて
-
void main()って誰が最初?:AN...
おすすめ情報