• 0

C++ Classes Implementation Problem


Question

I'm trying to implement the following code but I keep getting compiler errors. I'm using Dev-C++ default settings. Is it a compiler settings problem or code problem? Anyone have any ideas? Thanks :)

(Sorry I'm really noob at programming lol, any help is greatly appreciated.)

// File name: point.h

// include necessary libraries and definitions

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

#ifndef POINT
#define POINT

class Point
{
	  private: // declare private members
			  double x;
			  double y;
			  string label;

	  public: // declare public members
			 Point();
			 Point(double x, double y, string label);
			 double get_x()const;
			 double get_y()const;
			 string get_label()const;
			 double set_x(double x);			 
			 double set_y(double y);			 
			 string set_label(string label);			 
			 void print()const;
};
#endif

// File name: Point.cpp
#include "point.h"


// Default constructor 
Point::Point() 
:x(),y(),label()
{ 
 x = 0; 
 y = 0; 
 label = "BLANK";  
} 

Point::Point(double input_x, double input_y, string input_label) // constructor that sets the values for variables to be set up for input
:x(input_x), y(input_y), label(input_label)
{
			 x = input_x;
			 y = input_y;
			 label = input_label;
}

double Point::set_x(double user_x) // set the value of x
{
	   x = user_x;
	   return x;
}

double Point::set_y(double user_y) // set the value of y
{
	   y = user_y;
	   return y;
}

string Point::set_label(string user_label) // set the value for label
{
	   label = user_label;
	   return label;
}

double Point::get_x()const // get the X value
{
	   return x;
}

double Point::get_y()const // get the Y value
{
	   return y;
}

string Point::get_label()const // get the label value
{
	   return label;
}

void Point::print()const // let's print the final result
{
	 cout << "\n" << label << "(" << fixed << setprecision(1) << x << "," << fixed << setprecision(1) << y << ")" << endl;
}

#include "point.h"

int main(void)
{
  Point source;								 // default constructor called
  Point destination(6.2, 16.7, "Destination");  // constructor called

	source.print();   
	destination.print();

	source.set_x(45);
	destination.set_y(33.4);

	source.print();
	destination.print();

	cout << "The x coordinate of point source is: " 
	<< source.get_x() << endl;

	cout << "The y coordinate of point destination is: " 
		 << destination.get_y() << endl;

	cout << "The label of point source is: "  << source.get_label() << endl;
	source.set_label("SOURCE");

	cout << "The new label of point source is: "  << source.get_label()<< endl;	

	cout << "----- Program ends here -----" << endl;

	return 0;
}

Errors:

  Quote
Compiler: Default compiler

Executing g++.exe...

g++.exe "D:\School\University Year 1\Engg 233\Lab 7\ex1\lab7_1.cpp" -o "D:\School\University Year 1\Engg 233\Lab 7\ex1\lab7_1.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x17f):lab7_1.cpp: undefined reference to `Point::Point()'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x1de):lab7_1.cpp: undefined reference to `Point::Point(double, double, std::string)'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x26e):lab7_1.cpp: undefined reference to `Point::print() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x279):lab7_1.cpp: undefined reference to `Point::print() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x28e):lab7_1.cpp: undefined reference to `Point::set_x(double)'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x2a5):lab7_1.cpp: undefined reference to `Point::set_y(double)'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x2b2):lab7_1.cpp: undefined reference to `Point::print() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x2bd):lab7_1.cpp: undefined reference to `Point::print() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x2c8):lab7_1.cpp: undefined reference to `Point::get_x() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x30f):lab7_1.cpp: undefined reference to `Point::get_y() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x35d):lab7_1.cpp: undefined reference to `Point::get_label() const'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x456):lab7_1.cpp: undefined reference to `Point::set_label(std::string)'

C:\Users\JONATH~1\AppData\Local\Temp/ccAddaaa.o(.text+0x501):lab7_1.cpp: undefined reference to `Point::get_label() const'

collect2: ld returned 1 exit status

Execution terminated

Link to comment
https://www.neowin.net/forum/topic/753786-c-classes-implementation-problem/
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Hey, thanks for your reply. Actually it's named correctly (My comment was wrong) but I have the following error for point.cpp:

  Quote
Compiler: Default compiler

Executing g++.exe...

g++.exe "D:\School\University Year 1\Engg 233\Lab 7\ex1\point.cpp" -o "D:\School\University Year 1\Engg 233\Lab 7\ex1\point.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"

C:\Dev-Cpp\lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16'

collect2: ld returned 1 exit status

Execution terminated

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.