저는 C++의 새로운 사람입니다. 템플릿 기능을 만들고 싶습니다. 템플릿의 반환 값 문제를 만났습니다. 코드는 다음이템플릿 함수 반환 문제
#include <iostream>
#include <cmath>
#include <gsl/gsl_rng.h>
#define pi 3.1415926535
using namespace std;
template <class T>
T cpradius(T a,T b,T p, int n)
{
const gsl_rng_type *R;
gsl_rng *r;
gsl_rng_env_setup();
R = gsl_rng_default;
r = gsl_rng_alloc(R);
T p1[n],p3[n],p2 ;
T radius[n] ;
for (int i = 0; i<n; i++)
{
p1[i] = gsl_rng_uniform(r);
p2 += p1[i];
}
for (int j = 0; j<n; j++)
{
p3[j] = p1[j]/p2;
radius[j] = sqrt(p3[j]*a*b*p/pi);
//cout << radius[j] << endl;
}
return radius[n];
}
int main(){
double r[30] = {0};
r[30] = cpradius(30.0,30.0,0.6,30);
for (int i = 0;i<30;i++){
cout << r[i] <<endl;
}
return 0;
}
처럼, 컴파일 :
g++ -Wall -I/usr/local/include/ tst3.cpp -lgsl -lgslcblas
을 결과가 1 개 콜 럼, 30 제로가된다
0
0
0
...
0
가 업데이트되지 초기 배열을 보인다, 아무도 않습니다 도와주세요? 고맙습니다!
유효한 배열 인덱스는'[0, n-1]'입니다. 그러므로'radius [n]'과'r [30]'은 정의되지 않은 동작을 호출합니다. –