ページ 11

ファイル名からクラス名を自動でつけたい

Posted: 2021年1月29日(金) 14:46
by yuooki
VisualStudioのC++において、ファイル名から拡張子(.cppや.hpp)を
除いたものをクラス名に設定することは可能でしょうか。
プリプロセッサ命令を使えばできるのでしょうか?

例えばhoge.hにおいて

class FILE_NAME
{

}

とすると

class hoge
{

}

と置き換えてくれるようなものです。
拡張子は取り除いてほしいです。

可能なのであれば具体的なコードを掲示していただけると助かります。

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月29日(金) 17:09
by Meta3
そのような機能はないでしょうね

ファイルごとにクラスを割り振ることは自動化するほどのことではないでしょう?

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月29日(金) 18:29
by usao
オフトピック
Visual Studio でクラスの追加操作を行えば,デフォルトのファイル名が クラス名.cpp とかになる.
(まぁ,そういう話ではないのだろうけど)

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月29日(金) 22:58
by あたっしゅ
__FILE__ とか使えば、できるっぽい。
具体的なコードは、ちょっと面倒そうなので...

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月29日(金) 23:09
by Meta3
#3
そうですねプロジェクトを右クリックしてクラスの追加をすればクラス名.h クラス名.cpp ができるから
逆の発想でできますね

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月29日(金) 23:16
by あたっしゅ
ちょっとやってみたが挫折した...

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月30日(土) 00:34
by yuooki
ご返信ありがとうございます。
クラス名を迷っていて、あとでいい名前が思いついたらファイル名を変更すれば
.cppにおいても、

FILE_NAME::funcA()
{
}
FILE_NAME::funcB()
{
}
...

のFILE_NAMEもhogeに自動で置き換わったらちょっと便利かなと思ったのですが・・・

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年1月30日(土) 17:10
by 参照魚
gccでmakfileを使用するなら、makefile中でコンパイラオプションに下記を与えるといけるかもしれません。

-DFILE_NAME=$(*F)

ただ、まったくもってお勧めしません。

ファイル名変更時の修正を最小化したいのなら、下記の方法もできなくはないです。

①クラスをすべてインラインで書く
クラス名の変更だけでいけるが、実装が丸見え。

②decltypeを使う
クラス名の変更とextern 宣言の変更でいける。

FILE_NAME.hpp

コード:

class FILE_NAME {
void funcA();
};
extern FILE_NAME dummy;
FILE_NAME.hpp

コード:

void_decltype(dummy)::funcA(){}
これも、まったくもってお勧めしません。

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年2月08日(月) 17:18
by usao
後からクラス名を変えたい というだけの話なのであれば,
VisualStudioを使っているなら,
コード上のクラス名の場所で右クリックメニューから「名前の変更」を選んで置換してもらうので良いのでは.

(わざわざ ファイル名=クラス名 とかいう謎の縛りでコード書く必要もないだろうし)

Re: ファイル名からクラス名を自動でつけたい

Posted: 2021年2月09日(火) 21:30
by あたっしゅ
> VisualStudioを使っているなら,
> コード上のクラス名の場所で右クリックメニューから「名前の変更」を選んで置換してもらうので良いのでは.

そんなこと、できたのか。Visual Stadio 含めた IDE に、あまり知られていない機能、たくさんありそうだな。