我想傳遞數組函數(* getcreditcurve)。我期待函數(* getcreditcurve)返回一個數組。主函數預計會發送幾個這樣的函數(* getcreditcurve),指針函數有望使用指針函數(* getcreditcurve)中給出的邏輯將數組返回給不同數組的主函數。但是我得到以下錯誤。有人可以幫忙解決問題嗎?對不起,我經歷了其他帖子/問題在這個網站,但無法獲得最簡單的方法來解決這個問題。我將用這個邏輯來構建其他項目,這樣簡化了解決主要問題的問題。傳遞一個數組變量函數返回一個數組變量
'#include<iostream>
#include<cmath>
#include<fstream>
typedef double S1[5];
using namespace std;
double *getcreditcurve(double);
int main()
{
S1 C1, C2;
C1 = { 0.0029, 0.0039, 0.0046, 0.0052, 0.0057 };
C2 = { 0.0020, 0.0050, 0.0060, 0.0070, 0.0080 };
typedef double *issuer;
issuer I1 = getcreditcurve(C1);
issuer I2 = getcreditcurve(C2);
ofstream print;
print.open("result1.xls");
print << I1+1 << '\t' << I2+2 << endl;
print.close();
return 0;
}
double *getcreditcurve(double S1[5])
{
const int cp = 5;
typedef double curve[cp];
curve h;
h[0] = 2 * S1[0];
h[1] = 3 * S1[1];
h[2] = 4 * S1[2];
h[3] = 5 * S1[3];
h[4] = 6 * S1[4];
return h;
}'
1> ------構建開始:項目:Project2中,配置:調試的Win32 ------ 1> Source.cpp 1> C:\用戶\ kdatta \文件\ cqf \ C++ \ project2 \ source.cpp(12):錯誤C3079:初始化程序列表不能用作此賦值運算符的右操作數1> c:\ users \ kdatta \ documents \ cqf \ C++ \ project2 \ source .cpp(13):錯誤C3079:初始化程序列表不能用作此賦值運算符的右操作數1> c:\ users \ kdatta \ documents \ cqf \ C++ \ project2 \ source.cpp(16):error C2664:'double * getcreditcurve(double)':不能將參數1從'S1'轉換爲'double' 1>沒有上下文可以進行這種轉換(c)\ C++ \ project2 \ source.cpp(17):錯誤C2664:'double * getcreditcurve(double)':不能將參數1從'S1'轉換爲'double' 1>沒有可能進行此轉換的上下文 1> c:\ users \ kdatta \ documents \ cqf \ C++ \ project2 \ source.cpp(42):警告C4172:返回本地變量或臨時地址 = =========生成:0成功,失敗1,0最多爲最新,0跳過==========
在這裏我再次去 - 做summat與 –