私は、このコンストラクタは(、ない私が他の誰かによって)C++ライブラリで実装されている:のconstのchar *パラメータとして変数が機能する
私は私自身の機能で使用したいVariables(const char *s)
、便利な() 。 これはuseful()関数で、コンストラクタの変数(const char * s)へのパラメータとして送信したいintを計算します。
私はintを文字列に変換してからconst char *データ型に変換します。 そして、それらをVariablesコンストラクタのパラメータとして送信しましたが、エラーメッセージが表示されます。
変数loopOEの整数に応じて、文字列「xi」を作成しています。ここで、iはベクトルloopOEのi番目の整数です。たとえば、ループ[0] = 2の場合、文字列 "x2"を作成し、次にconst char *
に変換し、コンストラクタの変数(const char * s)に送信します。
My機能)(有用なのは、次のようになります。
void useful(){
vector<int> loopsOE;
for (unsigned int i=0;i<6;i++)
loopsOE.push_back(i);
for (unsigned int i=0;i<loopsOE.size();i++){
//convering int to string
std :: ostringstream sstreamComplete;
sstreamComplete << loopsOE[i];
std :: string loopsOEStr=sstreamComplete.str();
//construct the string variable "xi"
string varPoly("x");
varPoly.append(loopsOEStr);
//converting the string to char*
const char* varPolyConverted=varPoly.c_str()
}
std::vector<polynomial_t> Vec(myEdgesIntersect.size());
Variables V(varPolyConverted);
}
私は、この関数をコンパイルしようとすると、私は次のようなエラーメッセージが出ます:
QSweepComplete.cpp: In member function 'void QSweepComplete::prealexMatrix()': QSweepComplete.cpp:975: error: 'varPolyConverted' was not declared in this scope make: *** [.obj/QSweepComplete.o] Error 1
それでも私はのように理解していないが単純な定数で関数を次のように変更すると、次のようになります。
void usefulModified(){
vector<int> loopsOE;
for (unsigned int i=0;i<6;i++)
loopsOE.push_back(i);
for (unsigned int i=0;i<loopsOE.size();i++){
//convering int to string
std :: ostringstream sstreamComplete;
sstreamComplete << loopsOE[i];
std :: string loopsOEStr=sstreamComplete.str();
//construct the string variable "xi"
string varPoly("x");
varPoly.append(loopsOEStr);
//converting the string to char*
const char* varPolyConverted=varPoly.c_str()
}
std::vector<polynomial_t> Vec(myEdgesIntersect.size());
const char * str="x0";
Variables V(str);
}
関数コンパイル何の問題もなく走ります。
誰かが何か提案があれば、私はそれらを高く評価します。
ありがとうございます。 幸運を祈り、 madalina
もしそうなら、彼はぶら下がりのポインタを得るでしょう。 – sharptooth
この場合、ループを終了する前にvarPolyConvertedに0を代入すると効果があります。 – AlbertoPL
それから彼はいつも彼が望むことではない関数呼び出しの場所でゼロを持つでしょう。 – sharptooth