簡體   English   中英

使用方法聲明未知數量的變量

[英]Using a method to declare an unknown amount of variables

我對 C++ 非常陌生,我正在嘗試創建一個數學引擎

我有一個名為 Point 的 class,來自這個 class 的對象需要能夠保存未知數量的維度值。 我有一個名為 DAmount 的變量,它是在創建點時決定的。 我想要一種方法來獲取 DAmount,並創建連接到點 object 的許多變量。

例如,我聲明了一個名為“SixDPoint”的點,然后將其 DAmount 設置為 6。然后我使用名為 CreateDVars 的方法創建了六個連接到 object“SixDPoint”的變量。 然后我可以使用這六個變量作為 XYZ+ 軸。

我不知道該怎么做。 這是一些代碼來解釋我正在嘗試做的事情。 非常感謝


#include <iostream>
using namespace std;

class Point
{
  public:

    int DAmount;

    void CreateDVars(int)
    {
      //Variable declaration Function
    }

};

int main()
{

  Point SixDPoint;  //declaring a Point named SixDPoint

  SixDPoint.DAmount = 6;  // this sets the dimension amount, of SixDPoint, to 6

  SixDPoint.D1 = 1;
  SixDPoint.D2 = 1;
  SixDPoint.D3 = 1;
  SixDPoint.D4 = 1;
  SixDPoint.D5 = 1;
  SixDPoint.D6 = 1;
  //this should assign all six dimensions of SixDPoint, to 1
  cout << SixDPoint.D1 << "/n";
  cout << SixDPoint.D2 << "/n";
  cout << SixDPoint.D3 << "/n";
  cout << SixDPoint.D4 << "/n";
  cout << SixDPoint.D5 << "/n";
  cout << SixDPoint.D6 << "/n";
//this should print out all of the coordinates of SixDPoint
  return 0;
}

我相信你想要這樣的東西:

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

class Point
{
public:

    int DAmount;

    void CreateDVars(int k)
    {
        dim.resize(k);
    }
    int& operator[](int k)
    {
        if (k >= 0 && k < dim.size())
            return dim[k];
    }
private:
    vector<int> dim;
};

int main()
{

    Point SixDPoint;  //declaring a Point named SixDPoint

    SixDPoint.CreateDVars(6);
    SixDPoint[0] = 1;
    SixDPoint[1] = 1;
    SixDPoint[2] = 1;
    SixDPoint[3] = 1;
    SixDPoint[4] = 1;
    SixDPoint[5] = 1;
    //this should assign all six dimensions of SixDPoint, to 1
    cout << SixDPoint[0] << "/n";
    cout << SixDPoint[1] << "/n";
    cout << SixDPoint[2] << "/n";
    cout << SixDPoint[3] << "/n";
    cout << SixDPoint[4] << "/n";
    cout << SixDPoint[5] << "/n";
    //this should print out all of the coordinates of SixDPoint
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM