1

を呼び出して、属性test aisbnがデータを正常に格納しているようです。しかし、これらの値を保存しようとすると、問題が発生し始めますsetCode()setDigit()list<test> simul

setDigit()list 属性は、code の後に数字の値を取ります。コードと数字の両方を list 属性に入れるにはどうすればよいですか? 問題がどこにあるのかわかりません。コード:

#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>
#include <list>
using namespace std;

class test
{
    private:
        string code;
        int digit;

    public:
        //constructor
        test(): code(""), digit(0) { }

        //copy constructor
        test(const test &other):
        digit(other.digit)
        { 
            for(unsigned int i=0; i < code.length(); i++)   
                code[i] = other.code[i];
        }

        //set up the private values 
        void setCode(const string &temp, const int num);
        void setCode(const string &temp);
        void setDigit(const int &num);


        //return the value of the pointer character 
        const string &getCode() const;
        const unsigned int getDigit() const;
};

const string& test::getCode() const
{
    return code;
}
const unsigned int test::getDigit() const
{
    return digit;
}
void test::setCode(const string &temp, const int num)   
{
    if((int)code.size() <= num)
    {
        code.resize(num+1);
    }
    code[num] = temp[num];
}
void test::setCode(const string &temp)  
{
    code = temp;
}
void test::setDigit(const int &num)
{
    digit = num;
}


int main()
{
    const string contents = "dfskr-123";

    test aisbn;
    list<test> simul;
    list<test>::iterator testitr;
    testitr = simul.begin();
    int count = 0;

    cout << contents << '\n';
    for(int i=0; i < (int)contents.length(); i++)
    {
        aisbn.setCode(contents);
        aisbn.setDigit(count+1);
        simul.push_back(aisbn);
        count++;
    }
    cout << contents << '\n';

    /*for(; testitr !=simul.end(); simul++)
    {
        cout << testitr->getCode() << "\n";
    }*/

}
4

2 に答える 2