• ベストアンサー

C2601 ローカル関数の定義について

 タイトルの通りのエラーが出ました。 F1ボタンを押して、解説みたいなのも見て、括弧が原因みたいなことが書いてあったのですが、どうもうまくいかないみたいです。  プログラムは載せる事ができないのですが、括弧以外にもC2601のエラーになる原因はあるのですか? お願いします。 OSはWin XPで、 コンパイラは、VC++です。

質問者が選んだベストアンサー

  • ベストアンサー
  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.3

#1です。関数の中に関数を書きたいと言うことですが、mylib().func1()、mylib().func2() のような感じにしたいと言うことでしょうか? もしそういうことであれば、C++を使ってみるのも良いかもしれません。 -------- サンプル --------------------------------------- // ■ Sample.h #pragma once class Sample { public:   Sample(int x, int y); public:   int Sum();   int Subtract(); private:   int x;   int y; }; --------------------------------------- // ■Sample.cpp #include "Sample.h" Sample::Sample(int x, int y) {   this->x = x;   this->y = y; } int Sample::Sum() {   return x+y; } int Sample::Subtract() {   return x-y; } --------------------------------------- // ■Main.cpp(Sampleを使う方法) #include <iostream> #include "Sample.h" using namespace std; void main() {   // パターン1(スタック使用)   Sample s(10, 20);   cout << "Sum :" << s.Sum() << endl;   cout << "Subtract :" << s.Subtract() << endl;   // パターン2(ヒープ領域使用)   Sample* p = new Sample(10, 20);   cout << "Sum :" << p->Sum() << endl;   cout << "Subtract :" << p->Subtract() << endl;   delete p; } --------------------------------------- こんな感じで、Sampleクラスがfunc1()の代わりで、クラスの中にメンバ変数やメンバ関数を追加してゆけます。

noname#89227
質問者

お礼

C++は使えないんですよ…。 わざわざ、サンプルまで載せて頂いたにも関わらず、申し訳ないです。 回答ありがとうございました。

その他の回答 (2)

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.2

>func1の中にfunc2を書きたい場合はどうすればよいのですか? なぜそうしなければならないのかがさっぱりわからないのですが… int func1() { ... func2() ... } static int func2() { ... } という風にstaticの関数ではダメなのでしょうか。 とはいえ、それはそれとして、一応回答を。 C++では、ローカルクラスに関数を定義する方法でそれっぽいものが作れるようです。>参考URL 私はそこまでする必要性を感じないので、やったことはありませんが。

参考URL:
http://www.fides.dti.ne.jp/~oka-t/cpplab-tips-1.html
noname#89227
質問者

お礼

 実行できました。 どうもありがとうございました。

  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.1

関数の中に関数を書こうとしている箇所はありませんか? --サンプル------------------------------------- void func1() {   int func2(){...} // 関数func1の中に、関数func2()は定義できません。 }

noname#89227
質問者

補足

 その通りです。関数の中に関数を書いていました・・・ --サンプル------------------------------------- void func1() {   int func2(){...} // 関数func1の中に、関数func2()は定義できません。 } 例えば、このサンプルのようにfunc1の中にfunc2書きたい場合はどうすればよいのですか?

関連するQ&A