2年前VC++で関数呼び出し時に末尾の括弧がない場合にコンパイルエラーにする方法はあるでしょうか?例えば、あるクラス(TestClass)の静的メンバ変数(member)の値を返すgetter関数を呼び出す際に「TestClass::getMember()」のように括弧ありで呼び出すと、正常にメンバ変数の値が返りますが「TestClass::getMember」のように括弧なしで呼び出すと、異常な値(「001513BB」などの16進数(?)のような値)が返ります。括弧なしで呼び出したとしても、返った値を変数に代入したり、別の値と比較したりする場合は型の不一致でエラーになるので気付くことができます。返った値を0と比較する場合など、エラーにならない場合もあります。(下記コード参照)このような場合だと、括弧の付け忘れに気付かず、バグの原因になってしまうのでどんな場合でも、括弧なしで関数を呼び出した場合はコンパイルエラーにしたいです。VisualStudioを使っているので、設定でエラーにできないか確認しましたが、そのような設定は見当たりませんでした。設定でエラーにできない場合、括弧の付け忘れを防止できるようなコードの書き方があれば、ご教授願います。括弧なしの関数の呼び出しは、どのような場合に使用するのでしょうか?こちらも併せてご回答いただけると幸いです。開発環境は以下の通りです。あるクラス(TestClass)の静的メンバ変数(member)の値を返すgetter関数を呼び出す際に「TestClass::getMember()」のように括弧ありで呼び出すと、正常にメンバ変数の値が返りますが「TestClass::getMember」のように括弧なしで呼び出すと、異常な値(「001513BB」などの16進数(?)のような値)が返ります。後者は関数を呼び出しているのではなく、関数のアドレスを得ているだけです。括弧なしの関数の呼び出しは、どのような場合に使用するのでしょうか?括弧なしの関数の呼び出しは、括弧を使わなくても関数を呼び出せる言語を使う場合に使用します。C++においても、演算子のオーバーロードを用いると、括弧を用いずに関数を呼び出せます。関数を呼び出さずにアドレスを取得するのは、関数ポインタ変数に関数のアドレスを代入して処理を切り替える場合などに使用します。2年前みけCATさん、迅速なご回答誠にありがとうございます。後者は関数を呼び出しているのではなく、関数のアドレスを得ているだけです。括弧なしの呼び出しだと全く別の処理になってしまうんですね。知らなかったので確認できて良かったです。C++においても、演算子のオーバーロードを用いると、括弧を用いずに関数を呼び出せます。「括弧を用いずに関数を呼び出せる」というのは「TestClass::getMember」と書いても「TestClass::getMember()」と同じ結果が得られるようになる、という意味でしょうか?演算子のオーバーロードは使ったことがないので、方法が分かりません。演算子のオーバーロードについて調べて、自分なりに考えてみました。getMember();}というように演算子のオーバーロードを追加してTestClassのオブジェクト(obj)を作って、「+obj」とすればメンバ変数の値を得ることができました。この方法なら、確かに括弧を用いずに関数を呼び出せる、ということになりますが当初の目的とは異なってしまいます。目的は、関数呼び出し時に末尾の括弧を付け忘れても意図しない動作にならないよう括弧の付け忘れに気付けるようにするか、括弧を付けた場合と同じ動作にできるようにすることです。演算子のオーバーロードを用いれば、「TestClass::getMember」と書いても「TestClass::getMember()」と同じ結果が得られるようになる、という意味でご回答いただいたのでしたらよろしければ、上記コードの例を用いた具体的な方法をご回答いただけますでしょうか?よろしくお願い致します。「括弧を用いずに関数を呼び出せる」というのは「TestClass::getMember」と書いても「TestClass::getMember()」と同じ結果が得られるようになる、という意味でしょうか?いいえ、そのような意図ではありません。0のようにTestClass::getMemberは関数ポインターでありエラーにはできませんね。2年前Mathさん、ご回答ありがとうございます。関数ポインターは使ったことがないですが、そういう使い方があるんですね。エラーにならない以上、やっぱり括弧を付けるように気をつけるしかないでしょうか。2年前その通りですよ。0;}とは言え、括弧を付けるように注意した方が手っ取り早いですね。取得するものとなります。書いてもエラーにはなりません。TestClass::T型であるものが存在しないからです。TestClass::T型であるものが存在しないからです。