problems with parameritized class constructors

Why dosen't this work? Thanks again for taking a look, as far as I know the syntax is correct.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//parameterized constructors
#include <iostream>
using namespace std;

class MyClass{
public:
	int x;

	MyClass();
	~MyClass();
};

// parameterized constructor
MyClass::MyClass(int i){
	x = i;
}

//destructor
MyClass::~MyClass(){
	cout << "x was " << x << " removing whole object...\n";
}
int main(){
	MyClass ob1(101);

	MyClass ob3(301);

	MyClass ob2(200);

	cout << "ob1.x: " << ob1.x << "\nob2.x: " << ob2.x << "\nob3.x: " << ob3.x;

	return 0;
}


Errors:
classparam.cpp
classparam.cpp(14) : error C2511: 'MyClass::MyClass(int)' : overloaded member function not found in 'MyClass'
classparam.cpp(5) : see declaration of 'MyClass'
classparam.cpp(23) : error C2664: 'MyClass::MyClass(const MyClass &)' : cannot convert parameter 1 from 'int' to 'const MyClass &'
Reason: cannot convert from 'int' to 'const MyClass'
No constructor could take the source type, or constructor overload resolution was ambiguous
classparam.cpp(25) : error C2664: 'MyClass::MyClass(const MyClass &)' : cannot convert parameter 1 from 'int' to 'const MyClass &'
Reason: cannot convert from 'int' to 'const MyClass'
No constructor could take the source type, or constructor overload resolution was ambiguous
classparam.cpp(27) : error C2664: 'MyClass::MyClass(const MyClass &)' : cannot convert parameter 1 from 'int' to 'const MyClass &'
Reason: cannot convert from 'int' to 'const MyClass'
No constructor could take the source type, or constructor overload resolution was ambiguous

Once again, thanks for looking.
enduser000
You must declare the constructor as part of the class before you can define it.
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass {
  public:
    int x;
    MyClass();       // declaration, not definition
    MyClass(int i);  // again, it must be declared
    ...
  };

MyClass::MyClass(): x(0) { }  // definition of default constructor

MyClass::MyClass(int i): x(i) { }  // definition of the only parameterized ctor

...


Hope this helps.
[/code]
Thanks, forgot it in the prototype like you said.

Revised code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//parameterized constructors
#include <iostream>
using namespace std;

class MyClass{
public:
	int x;

	MyClass(int i);
	~MyClass();
};

// parameterized constructor
MyClass::MyClass(int i){
	x = i;
}

//destructor
MyClass::~MyClass(){
	cout << "x was " << x << " removing whole object...\n";
}
int main(){

	MyClass ob1(5);
	MyClass ob2(19);

	cout << "ob1.x: " << ob1.x << "\nob2.x: " << ob2.x << '\n';

	return 0;
}


enduser000
Topic archived. No new replies allowed.