キャスト演算子をオーバーロードしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

キャスト演算子をオーバーロードしたい

#1

投稿記事 by MoNoQLoREATOR » 13年前

ostringstreamクラスで<<演算子を使用したときに自動的にconst char*型を返してくれると便利なので、a5uaさんのコードを見ながら下記のコードを書いてみたのですが、コンパイルエラーが出てしまいました。

↓ソースコード
► スポイラーを表示
エラー内容

コード:

error C2801: 'operator const char *' は静的でないメンバでなければなりません

ちなみにVisualC++2008を使用しています。

ご教授よろしくお願い致します。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: キャスト演算子をオーバーロードしたい

#2

投稿記事 by beatle » 13年前

本当にそこソースコードでそのエラーが出ますか?僕は出ませんでした。Visual C++ 2010です。
ちなみにそのソースコードだと、operator const char*の戻り値はダングリングポインタになります。
うまく動くまでに改造してみました。
► スポイラーを表示

アバター
a5ua
記事: 199
登録日時: 14年前

Re: キャスト演算子をオーバーロードしたい

#3

投稿記事 by a5ua » 13年前

VC2008 Expressをインストールして試してみましたが、コンパイルエラーは出ませんでした。
(バージョン情報)
Microsoft Visual Studio 2008
Version 9.0.30729.1 SP

MoNoQLoREATORさんが使用しているVCのバージョンはいくつですか?

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: キャスト演算子をオーバーロードしたい

#4

投稿記事 by MoNoQLoREATOR » 13年前

>>beatleさん
そうでしたか。ありがとうございます。

>>a5uaさん
同じく
Version 9.0.30729.1 SP
でした。とりあえずインストールし直してみようと思います。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: キャスト演算子をオーバーロードしたい

#5

投稿記事 by beatle » 13年前

コード:

error C2801: 'operator const char *' は静的でないメンバでなければなりません
というエラーはおかしいんですよね。operator const char *はどうみても普通のメンバですから。
間違ったファイルをコンパイルしようとしているのではないかと思うんですが。
再インストール云々で治る話ではないと思います。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: キャスト演算子をオーバーロードしたい

#6

投稿記事 by MoNoQLoREATOR » 13年前

新しいプロジェクトを作成し、ついでにソースコードを下記のようにセキュアにするとコンパイルが通りました。
► スポイラーを表示
原因がどうであれ、解決したので良かったです。
ダングリングポインタを返していることも、その対処法も教えていただけて幸運だったと思います。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る