可以在C ++中的函数内为一个数组分配一个Int值吗?

时间:2015-11-15 19:04:11

标签: c++

可以使用C ++执行以下代码:

myFunction(myArray, positionInsideMyArray) = myValue.
cout << myFunction[positionInsideMyArray] << endl; // Display muValue

我怎样才能用C ++做到这一点?

要使我的问题更清楚,使用一个值,以下代码正常工作, 我想做同样的事情,但使用Array参数。

int& myFunction(int &x){
return x;
}

这是主要功能:

int x;
myFunction(x) = myValue;
cout << x << endl; // This will display myValue

2 个答案:

答案 0 :(得分:1)

#include <iostream>

int &myFunction(int *arr, size_t pos) { return arr[pos]; }

int main() {
  using std::cout;
  int myArray[30];
  size_t positionInsideMyArray = 5;
  myFunction(myArray, positionInsideMyArray) = 17.;
  cout << myArray[positionInsideMyArray] << "\n"; // Display muValue
}

或错误检查:

#include <stdexcept>

template<size_t N>
inline int &myFunction(int (&arr)[N], size_t pos) 
{
    if (pos >= N)
        throw std::runtime_error("Index out of bounds");
    return arr[pos]; 
}

答案 1 :(得分:0)

myFunction(myArray, positionInsideMyArray) = myValue.
cout << myFunction[positionInsideMyArray] << endl;  

仅使用功能,第二行是不可能的;你需要上课 但是,第二个电话会记住来自中的myArray 首先使整个语义有点奇怪......
一个粗略的想法(没有完整的类,仅适用于int数组):

class TheFunc
{
    int *arr;
    int &operator() (int *arr, size_t pos)
    {
        this->arr = arr;
        return arr[pos];
    }
    int &operator[] (size_t pos)
    {
        return arr[pos];
    }
};
...
TheFunc myFunction;
myFunction(myArray, positionInsideMyArray) = myValue.
cout << myFunction[positionInsideMyArray] << endl;  

一个不同的,更强大的版本,它单独设置的数组:

class TheFunc
{
    int *arr;
    TheFunc(int *arr)
    {
        this->arr = arr;
    }
    int &operator() (size_t pos)
    {
        return arr[pos];
    }
    int &operator[] (size_t pos)
    {
        return arr[pos];
    }
};
...
TheFunc myFunction(myArray);
myFunction(positionInsideMyArray) = myValue.
cout << myFunction[positionInsideMyArray] << endl;