0

私は得る:C:\Documents and Settings\ppp\Pulpit\Zadanie3Infix\main.cpp|72|error: conversion from 'std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*' to non-scalar type 'std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' requested|

理由はわかりません。この関数は、文字列のベクトルを返すと想定されていますが、これらの * & をすべて使用しましたが、機能しません。このベクトルを返すように修正してください。

s = "(2+23)" のように動作し、トークンを含むベクトルを返します。

  vector<string> split(string s){
    vector<string>* v = new vector<string>();
    int i = 0; bool b;string el = "";
    while(i < s.size()){

        if(isNotNumber(s.at(i))){
            el = s.at(i);
            v->push_back(el);
            cout<<el<<" to operator"<<endl;
            el = "";
            i++;
        }else{
            while( i <s.size() && !isNotNumber(s.at(i))){//LENIWE WYLICZANIE !!!
                el = el + s.at(i);
                cout<<s.at(i)<<" to liczba"<<endl;
                i++;
            }
            v->push_back(el);
            el = "";
        }
    }
    cout<<"PO while"<<endl;
    for(int i = 0; i < v->size();i++){
        cout<<v->at(i)<<endl;
    }

    return v;
}

そしてそれはどうですか

stack<string>* stack = new stack<string>();

スタックの前の型指定子 ;////////////////

4

4 に答える 4

4

関数split()は を返すと主張していvector<string>ますが、戻り値はvです。とはv? これは

vector<string>* v

ポインターを返そうとしていますが、関数宣言はポインターを返していないと述べています。実際、関数にはポインターはまったく必要ありません。レギュラーを使用するか、参照vector<string>によってベクターを渡すだけです。

void split(string s, vector<string>& v){
于 2012-08-25T15:48:47.863 に答える
2

関数シグネチャはベクトルを返しますが、戻り値はポインターです。戻り値の型をベクトルへのポインターに変更するか、関数本体で値によってベクトルを返します。

于 2012-08-25T15:49:05.963 に答える
1

これは本当にBlastfurnaceの答えです...

ただし、次の行を変換します。

vector<string>* v = new vector<string>();

の中へ

vector<string> v;

すべてをに変更しv->ますv.

このようにして、メモリリークも修正します。(によって割り当てられたメモリnew vector<string>()は決して削除されません)。ただし、vector<string> v;メモリをスタックに置き、範囲外になると自動的に削除されます。

于 2012-08-26T08:16:05.833 に答える