dlaczego metoda klasy generuje błąd "void value not ignored as it ought to be"

0

Witam

Zdefiniowałem klasę następująco:

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

class C01 {
public:
C01(int);
~C01();
void Add();
private:
int *x;
vector<int> *val;
};
C01::C01(int a) {
x = new int;
val = new vector<int>;
*x = a;
*val = vector<int> ();
}
C01::~C01() {
delete val;
delete x;
}
void C01::Add() {
*val->push_back(*x);

W moim zamierzeniu metoda Add ma dopisować wartość wskazywaną przez x do wektora wskazywanego przez val

Kompilacja: g++ -Wall class_01.cpp -o test_cl01
daje błąd: "error: void value not ignored as it ought to be" w linii *val->push_back(*x);

Proszę o pomoc w zrozumieniu powodów tego błędu.

Pozdrawiam

Cuma

0

Co to ma robić? Po co?

*val = vector<int> ();
         void C01::Add() {
                 val->push_back(*x);
		 }
0

Chciałem zainicjować wektor zmiennych typu int. Teraz jak się nad tym zastanowiłem to ta linia jest chyba zbędna.

0

No dokładnie;

0

Wielkie dzięki za pomoc, teraz działa. Istotnie linia: val = vector<int> (); była zbędna.

No tak, dla wskaźników, a val nim jest, -> jest operatorem wyłuskania.

To też działa:
(*val).push_back(*x);

Wcześniej miałem *val.push_back(*x); I to też sypało błędami

Pozdrawiam

Cuma

0

Na upartego możesz użyć kropki.

         void C01::Add() {
                 (*val).push_back(*x);

1 użytkowników online, w tym zalogowanych: 0, gości: 1