Tworznie obiektu i problem z konstruktorem (constant)

0

Witam.
Mój kod w uproszczeniu (aby pokazać o co dokładnie mi chodzi) składa się z dwóch klas.

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

class ClassA{
public:
int zmienna;
string name;
	ClassA(){
		zmienna=4;
		cin>>name;
	}
	ClassA(int a,string n){
		zmienna=a;
		name=n;
	}

};
class ClassC{
public:
	ClassA objA(2,"name");
	void wypisz(){
		cout<<objA.zmienna<<objA.name;
	}
};
int main() {
	ClassC obj;
	obj.wypisz();
	return 0;
} 

W klasie ClassC tworzę obiekt klasyA.
Wszystko działa jeśli tworzę go przez domyślny konstruktor (ClassA objA), jednak jeśli chcę przekazać parametr (tak jak w kodzie powyżej) dostaję błąd ** error C2059: syntax error : 'constant'**
Jak powinien wyglądać ten kod?

0

Coś w ten deseń.

 class ClassC{
public:
        ClassA objA;
        ClassC(int z=2, string s="name"): objA(z,s) { }
        void wypisz(){
                cout<<objA.zmienna<<objA.name;
        }
};
int main() {
        ClassC obj;
        obj.wypisz();
        return 0;
}
1

o_O a w jakim języku ten kod wyglądałby tak jak to napisałeś? WTF?

class ClassC{
private:
  ClassA objA;
public:
        ClassC():objA(2,"name"){}
        void wypisz(){
                cout<<objA.zmienna<<objA.name;
        }
};
1
mimol napisał(a)

class ClassC{
public:
ClassA objA(2,"name");
void wypisz(){
cout<<objA.zmienna<<objA.name;
}
};

a nie powinno być tak:

class ClassC{
public:
	ClassA objA ;

        ClassC():
            objA(2,"name")
        {
        }
	void wypisz(){
		cout<<objA.zmienna<<objA.name;
	}
};

??

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