可以使用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
答案 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;