2016-03-27 15 views
0

「結果ベクトル」がこのスコープで宣言されていないというエラーがあります。私はこれを宣言する場所や方法を確信していませんか?結果ベクターの意図は、ベクトルのX年代を加えた結果ショーで、Yの各ベクトルの、その後、あなたは変数を使用する前にように、あなたは、宣言それに持っている結果範囲C++エラー:スコープ内で宣言されていません。メンバー関数

#include <iostream> 
#include <vector> 
using namespace std; 

class vector{ 
private: 
    double x; 
    double y; 
public: 
    //Constructor - default 
    vector() : x(0), y(0) {} 
    //Constructor - Custom 
    vector(double xx, double yy) : x(xx), y(yy) {} 
    //Get X & Y Coordinates 
    double get_x() { return x; 
    } 
    double get_y() { return y; 
    } 
    //Set X & Y Coordinates 
    void set_x(double xx) { x = xx; 
    } 
    void set_y(double yy) { y = yy; 
    } 
    //Adding Vectors 
    vector add_vector(vector v1, vector v2){ 
     result_vector.x = v1.x + v2.x; 
     result_vector.y = v1.y + v2.y; 
     return result_vector; 
    } 
    //Subtracting Vectorsed 
    vector subtract_vector(vector v1, vector v2){ 
     result_vector.x = v1.x - v2.x; 
     result_vector.y = v1.y - v2.y; 
     return result_vector; 
    } 
}; 

int main() { 
    //Default 
    vector test; 
    cout <<"Default \n" test.get_x().get_y() << "\n"; 
    //Customer 
    vector test2(10, 12); 
    cout <<"Custom \n" test2.get_x().get_y() << "\n"; 
    //Adding 
    vector add = vector.add_vector(vector test1&, vector test2&); 
    cout <<"Adding \n" add.get_x().get_y() <<"\n"; 
    //Subtracting 
    vector sub = vector.subtract_vector(vector test1&, vector test2&); 
    cout <<"Subtracting \n" sub.get_x().get_y() <<"\n"; 

    return 0; 


} 

答えて

1

を通過示唆しています。

  • 最初に使用する前にresult_vectorを宣言する必要があります。
  • 引数としてオブジェクト名とともにクラス名を渡すことはできません。
  • cout <<"Default \n" test.get_x().get_y() << "\n";がベクトルのxとyの値を出力すると仮定すると、get_x()get_y()を別々に呼び出す必要があります。
  • アンドレアスDMで述べたように、彼は彼の次の問題があることである、ことを修正したら、それは修正

    #include <iostream> 
    #include <vector> 
    
    class vector{ 
    private: 
        double x; 
        double y; 
    public: 
        //Constructor - default 
        vector() : x(0), y(0) {} 
        //Constructor - Custom 
        vector(double xx, double yy) : x(xx), y(yy) {} 
        //Get X & Y Coordinates 
        double get_x() { return x; 
        } 
        double get_y() { return y; 
        } 
        //Set X & Y Coordinates 
        void set_x(double xx) { x = xx; 
        } 
        void set_y(double yy) { y = yy; 
        } 
        //Adding Vectors 
        vector add_vector(vector v2){ 
         vector result_vector; 
         result_vector.x = x + v2.x; 
         result_vector.y = y + v2.y; 
         return result_vector; 
        } 
        //Subtracting Vectorsed 
        vector subtract_vector(vector v2){ 
         vector result_vector; 
         result_vector.x = x - v2.x; 
         result_vector.y = y - v2.y; 
         return result_vector; 
        } 
    }; 
    
    int main() { 
        //Default 
        vector test; 
        std::cout <<"Default \n" <<test.get_x()<<test.get_y() << "\n"; 
        //Customer 
        vector test2(10, 12); 
        std::cout <<"Custom \n" <<test2.get_x()<<test2.get_y() << "\n"; 
        //Adding 
        vector add; 
        add = test.add_vector(test2); 
        std::cout <<"Adding \n" <<add.get_x()<<add.get_y() <<"\n"; 
        //Subtracting 
        vector sub ; 
        sub = test.subtract_vector(test2); 
        std::cout <<"Subtracting \n"<< sub.get_x()<<sub.get_y() <<"\n"; 
    
        return 0; 
    
    
    } 
    
0

を返しますコンパイラはそれが終了したことを知っています。 C++では、これは(一部の言語は、Pythonのように、それを必要としない)が必要、とあなたはそれを使用する前にあなたはそれが故に、エラーが存在しないresult_vectorを宣言していない(vector result_vector;

+0

を行った後、既存のクラスvector.vectorクラスと競合するため、また、あなたはusing namespace std;を使用することはできませんベクトルのxとyはプライベートで、彼はそれらに直接アクセスしようとしています。 –

+0

@mock_blattクラスは同じ型であるため、別の変数であっても、クラスにアクセスできるため、これは問題ありません。 – Rakete1111

+0

あなたは正しいです。彼の次の問題は、複数の関数呼び出しの間違った使用でしょうか? (私は間違ってその演算子連鎖と呼ばれる) –

1

result_vectorが最初に宣言しています。

また、あなたはusing namespace std;であり、クラス名はvectorです。
したがって、vectorへの参照はあいまいです。

あなたのコードは、他のいくつかのエラーを持って、私はあなたがデバッガを使用して、エラーが自明であるエラー

関連する問題