2

私は宇宙の最果て (別名インターネット) を検索しましたが、問題を解決する方法についてのヒントは 1 つも見つかりませんでした。だから私はあなたに来ます。

文字列のペアを含むリストを反復処理しようとしています。このリストは、配列内の 20 のうちの 1 つです。これは私の現在のコードです:

logging.h:

#ifndef LOGGING_H
#define LOGGING_H
#include <iostream>
#include <list>
#include <string>

class logging
{
    public:
        void log(int,std::string,std::string);
        void draw();
        logging();
        virtual ~logging();
    private:
        int displaylevel=0;
        std::list<std::pair<std::string,std::string>> logd[20];
};

#endif // LOGGING_H

ロギング.cpp:

#include "logging.h"
#include <list>
#include <string>
#include <iostream>

logging::logging(){
    //for future use
}

void logging::log(int level,std::string category, std::string entry) {
    int thislevel;
    for (thislevel=level-1;(thislevel>-1);thislevel--){
            std::pair <std::string,std::string> newentry;
            newentry = std::make_pair (category,entry);
            logd[thislevel].push_front(newentry);
    }
}
void logging::draw(){
    //draw console on the screen using opengl
    std::list<std::pair<std::string,std::string>>* log = &(logd[displaylevel]);
    std::list<std::pair<std::string,std::string>>::iterator logit;
    for ( logit = (*log).begin() ; logit != (*log).end() ; logit++ ) {
            std::cout << (*logit).first() << std::endl << (*logit).second() << std::endl;
    }
}

logging::~logging() {
    //Deconstructor for log class (save log to file?)
}

重要度 5 のイベントがログに記録された場合、リスト 0、1、2、3、および 4 に配置されるという考え方です。このようにして、ゲーム内でさまざまな詳細レベルを表示できます (コンソール/ログが開いている場合)。その詳細レベル (displaylevel で定義) に対応するリストを表示します。ただし、リストを適切に反復処理できないようです。std::basic_string への呼び出しに一致しないというエラーがスローされ続けます。どんな助けでも大歓迎です、私はC ++に非常に慣れていません。

4

3 に答える 3