[解決済み] C++におけるポインタへの参照の渡し方
2022-06-16 10:03:26
質問
私が知る限り、C++でポインタに参照を渡してはいけないという理由はありません。しかし、そうしようとする試みは失敗しており、その理由がわかりません。
これは私がやっていることです。
void myfunc(string*& val)
{
// Do stuff to the string pointer
}
// sometime later
{
// ...
string s;
myfunc(&s);
// ...
}
で、こんなエラーが出てる。
cannot convert parameter 1 from 'std::string *' to 'std::string *&'.
どのように解決すればよいですか?
この関数は、無名文字列ポインタではなく、呼び出し側のスコープにある実際の文字列ポインタへの参照を想定しています。したがって
string s;
string* _s = &s;
myfunc(_s);
はうまくコンパイルできるはずです。
しかし、これは関数に渡すポインタを変更する場合のみ有効です。もし文字列そのものを変更するつもりなら、Sakeが提案したように文字列への参照を使用すべきです。この点を考慮すれば、コンパイラがあなたの元のコードに文句を言う理由もより明白になるはずです。あなたのコードでは、ポインタは「その場で」作成され、そのポインタを変更しても何の影響もありませんし、それは意図されたものではありません。参照(対ポインタ)の考え方は、参照は常に実際のオブジェクトを指しているということです。
関連
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み] リファレンスとポインタの使い分け
-
[解決済み] なぜ 'this' はポインターで、参照ではないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】C++の余分な資格エラー
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない