Как исправить ошибку передачи строки в метод класса?
#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;
}
}
};
Заодно посмотрите на отличия этого кода от вашего и постарайтесь понять, почему они :)