[解決済み】演算子のオーバーロード時のエラー(非静的メンバ関数でなければならない)
2022-01-17 11:47:12
質問
文字列クラスを自作しています。そして、そのようなコードを持っています。私はちょうどオーバーロードしたい
operator=
. これは私の実際のコードですが、コードの最後の部分でエラーが発生します。
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
class S {
public:
S();
~S() { delete []string;}
S &operator =(const S &s);
private:
char *string;
int l;
};
S::S()
{
l = 0;
string = new char[1];
string[0]='\0';
}
S &operator=(const S &s)
{
if (this != &s)
{
delete []string;
string = new char[s.l+1];
memcpy(string,s.string,s.l+1);
return *this;
}
return *this;
}
しかし、残念ながら 'S& operator=(const S&)' は非静的なメンバ関数でなければならないというエラーが発生しました。
どうすればいいですか?
クラス名がありません。
これはグローバルオペレーターです。
'S& operator=(const S&)' must be a nonstatic member function
はグローバルにできません。
=
クラス関数として定義する必要があります。
S &operator=(const S &s)
関連
-
git eclipseプラグインのインストール
-
CE5.2版を使って、武術のベースサイトである第一レベルのメソッドを見つける(グラフィックチュートリアル)。
-
[解決済み】C++ Cout & Cin & System "Ambiguous" [クローズド]。
-
[解決済み】データフレームで関数を適用する場合、dim(X)は正の長さでなければならない
-
[解決済み】git pullの取り消し、レポを古い状態に戻す方法
-
[解決済み】エラー。式はintegralまたはunscoped enum型でなければなりません。
-
[解決済み】AdMobにアプリケーションを入れたら「ライブラリが見つからない」というエラーが出た
-
[解決済み] error: 'this' 引数に xxx を渡すと修飾子が消える
-
[解決済み] なぜJavaには演算子のオーバーローディングがないのですか?
-
[解決済み】静的定数文字列(クラスメンバ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スクリプトとバッチ処理がひとつに
-
スプレッドシートに匹敵するオンライングリッドシステム。EditGrid
-
[解決済み】警告メッセージ。In `...` : invalid factor level, NA generated 警告メッセージ:...`は無効な因子レベルです。
-
[解決済み】「g++」が内部コマンド、外部コマンド、操作可能なプログラム、バッチファイルとして認識されない。
-
[解決済み】C++ Cout & Cin & System "Ambiguous" [クローズド]。
-
[解決済み】GAEで完全に有効なXMLをパースすると「Prologではコンテンツが許可されません」と表示される
-
[解決済み】'const char*' から 'char*' への無効な変換。
-
[解決済み】C++の<map>に相当するC#は何ですか?[重複しています]
-
[解決済み】 c++ "Incomplete type not allowed" クラス参照情報へのアクセスエラー (前方宣言による円環状依存性)
-
[解決済み】ファイルにデータを書き込むときにこのエラーが発生する理由