Как исправить ошибку передачи строки в метод класса?

#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <cstring>
#include <cctype>
using namespace std;
class test{
    public:
    string a={"12","13"};
    int b=sizeof(string);
    void set(string d){
        a[b]=d;
    }
    void print(){
        for(int i=0; i<b; i++){
            cout<<a[i]<<endl;
        }
    }
};
int main() {
    test aba;
    aba.set("1213");
    aba.print();
    

    return 0;
}

Пытаюсь передать в функцию set() строку и добавить её в массив 'a', но выдает ошибку, как это исправить?


Ответы (2 шт):

Автор решения: Виктор

Вариант:

#include <iostream>
#include <string>
#include <vector>
using namespace std; 

class test{
    private:
        vector<string> a;

    public:
        void set(string d){
            a.push_back(d);
        }
        void print(){
            for(auto i: a){
                cout<< i <<endl;
            }
        }
};

int main() {
    test aba;
    aba.set("1213");
    aba.print();
    return 0;
}
→ Ссылка
Автор решения: Harry

Если хотите остаться с массивом — то и делайте массив...

class test{
    public:
    string a[2] = {"12","13"};
    int b = size(a);
    void set(string d){
        a[b-1]=d;
    }
    void print(){
        for(int i=0; i<b; i++){
            cout << a[i] << endl;
        }
    }
};

Заодно посмотрите на отличия этого кода от вашего и постарайтесь понять, почему они :)

→ Ссылка