ページ 1 / 1
無題
Posted: 2008年11月03日(月) 19:54
by dic
たびたび質問すいません
今下のコードを書いているのですが コンパイルエラーがでてリンクできません
どうすればいいのでしょうか?
#include <stdio.h>
class CNode;
typedef (CNode::*FUNC)(void);
class CNode {
double x;
void hoge() { }
public:
CNode();
FUNC func;
};
CNode::CNode() {
x = 0.0;
func = &CNode::hoge; // ここでエラー
func = this->hoge; // これもエラー
}
void main()
{
}
//ここでエラーのところにメンバ関数へのポインタを代入したいのですが
うまくいきません
コンパイラはVC++6.0です
Re:無題
Posted: 2008年11月03日(月) 20:01
by Justy
>typedef (CNode::*FUNC)(void);
とりあえず、戻り値を付けてあげましょう。
解決
Posted: 2008年11月03日(月) 20:06
by dic
>Justyさん
ありがとうございます
無事解決しました
またつまづいたので質問します
Posted: 2008年11月03日(月) 20:18
by dic
解決ボタン押したのですが
またつまづいたので質問します
また、下の // ここでエラー
というところでコンパイルエラーになってしまいます
どうすればいいのでしょうか?
メンバ関数アクセスはprivateですが
そこは無視してください(ってこのレベル答えれるのなら分かるかな
#include <stdio.h>
class CNode;
typedef void (CNode::*FUNC)(void);
typedef void (CNode::*FUNCTION)( CNode *node );
class CNode {
double x;
void hoge() { printf( "CNode::hoge called.\n" ); }
void show( CNode *node ) { printf( "%f\n", node->x ); }
public:
CNode();
FUNC func;
FUNCTION function;
};
CNode::CNode() {
x = 0.0;
func = CNode::hoge;
function = CNode::show;
}
void main()
{
CNode node;
node.func(); // ここでエラー
}
Re:またつまづいたので質問します
Posted: 2008年11月03日(月) 20:30
by たかぎ
node.[color=red>*[/color]func();
Re:またつまづいたので質問します
Posted: 2008年11月03日(月) 20:37
by dic
>たかぎさん
お返事ありがとうございます
教えられた通りコンパイルしてみましたがエラーがでました
node.*func(); // ここでエラー
error C2065: 'func' : 定義されていない識別子です。
error C2297: '.*' : 不正な右オペランドです。
とでます
Re:またつまづいたので質問します
Posted: 2008年11月03日(月) 21:00
by Justy
(node.*(node.func))();
かな?
Re:またつまづいたので質問します
Posted: 2008年11月03日(月) 21:00
by たかぎ
> 教えられた通りコンパイルしてみましたがエラーがでました
失礼しました。
(node.*node.func)();
でどうでしょうか?
Re:またつまづいたので質問します
Posted: 2008年11月03日(月) 21:05
by Justy
あー、中の括弧は要らなかったですね (^^
Re:またつまづいたので質問します
Posted: 2008年11月03日(月) 21:06
by dic
>Justyさん たかぎさん
お返事ありがとうございます
お二人方どちらの方法でもいけました
ありがとうございました