ホーム>source

私はテンプレートクラスが初めてで、機能と構文を試すために、非常に単純なプログラムを実装しようとしました。 テンプレートクラスの距離を初期化し、データを取得して表示しようとします。

<前>ウィズウィズ

ただし、 #include<iostream> using namespace std; template <class T> class distance { T feet; T inches; public: distance () { } T getdata (T f, T i) { feet=f; inches=i; } void showdata () { cout<<"Distance is "<<feet<<" feet and "<<inches<<" inches"; } }; int main () { distance <int> x; x.getdata(5,7); x.showdata(); } では行に、「エラー:「距離」への参照があいまいです」というエラーが表示されます。エラーを理解できません。

distance <int> x
あなたの答え
  • 解決した方法 # 1

    <前>ウィズウィズ

    なぜ using namespace std; なのか発見しました  悪い習慣です。

    これはC ++ライブラリの using namespace std; を注入します  プログラムのグローバル名前空間にテンプレートを追加すると、独自の std::distance と名前が競合する  テンプレート。

    これを削除し、すべての distance を置き換える s cout s、および std::cout からの戻り値の修正  すべてのコンパイルエラーを修正しました。

    これを学習レッスンとして使用: getdata() を回避する  将来的に、または不可解なコンパイルエラーに対処する準備をしてください。

    using namespace std;

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Spring BootおよびWebFluxを使用したサーバー送信イベント