- ベストアンサー
C2601 ローカル関数の定義について
タイトルの通りのエラーが出ました。 F1ボタンを押して、解説みたいなのも見て、括弧が原因みたいなことが書いてあったのですが、どうもうまくいかないみたいです。 プログラムは載せる事ができないのですが、括弧以外にもC2601のエラーになる原因はあるのですか? お願いします。 OSはWin XPで、 コンパイラは、VC++です。
- みんなの回答 (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()の代わりで、クラスの中にメンバ変数やメンバ関数を追加してゆけます。
その他の回答 (2)
- rentahero
- ベストアンサー率53% (182/342)
>func1の中にfunc2を書きたい場合はどうすればよいのですか? なぜそうしなければならないのかがさっぱりわからないのですが… int func1() { ... func2() ... } static int func2() { ... } という風にstaticの関数ではダメなのでしょうか。 とはいえ、それはそれとして、一応回答を。 C++では、ローカルクラスに関数を定義する方法でそれっぽいものが作れるようです。>参考URL 私はそこまでする必要性を感じないので、やったことはありませんが。
お礼
実行できました。 どうもありがとうございました。
- neuron-x
- ベストアンサー率52% (139/266)
関数の中に関数を書こうとしている箇所はありませんか? --サンプル------------------------------------- void func1() { int func2(){...} // 関数func1の中に、関数func2()は定義できません。 }
補足
その通りです。関数の中に関数を書いていました・・・ --サンプル------------------------------------- void func1() { int func2(){...} // 関数func1の中に、関数func2()は定義できません。 } 例えば、このサンプルのようにfunc1の中にfunc2書きたい場合はどうすればよいのですか?
お礼
C++は使えないんですよ…。 わざわざ、サンプルまで載せて頂いたにも関わらず、申し訳ないです。 回答ありがとうございました。