rendered paste body#
# file = Makefile
#
CC = g++
CDFLAGS = -c
LDFLAGS =
DEBUGFLAGS = -g
CFLAGS += $(DEBUGFLAGS)
CDFLAGS += $(DEBUGFLAGS)
OBJS = start.o class.o main.o
TARGET = mystart
default: $(TARGET)
clean:
rm -f *.o a.out $(TARGET)
$(TARGET): main.o $(OBJS)
$(CC) -o $(TARGET) main.o $(OBJS) $(LDFLAGS)
start.o: class.h class.cpp start.h
$(CC) $(CDFLAGS) start.cpp
class.o: class.h
$(CC) $(CDFLAGS) class.cpp
main.o: main.cpp class.cpp start.cpp
$(CC) $(CDFLAGS) main.cpp
//
// file = class.cpp
//
#include "class.h"
myclass::myclass() {
this->sum=0;
}
//
// file = class.h
//
#ifndef MYCLASS
#define MYCLASS
class myclass {
public:
int sum;
myclass();
template <typename T> void add(T o);
};
template <typename T> void myclass::add(T o) { sum++; };
#endif
//
// file = main.cpp
//
#include "start.h"
#include "class.h"
int main() {
myclass *c=myclass_start();
long a;
int b;
c->add(a);
c->add(b);
}
//
// file = start.cpp
//
#include "class.h"
myclass *myclass_start() {
myclass *t=new myclass();
int a;
t->add(a);
return t;
}
//
// file = start.h
//
#ifndef MYSTART
#define MYSTART
#include "class.h"
myclass *myclass_start();
#endif
//// RESULTS
g++ -c -g main.cpp
g++ -c -g start.cpp
g++ -c -g class.cpp
g++ -o mystart main.o start.o class.o main.o
main.o: In function `void myclass::add<int>(int)':
/home/gamemon/src3/main.cpp:7: multiple definition of `main'
main.o:/home/gamemon/src3/main.cpp:7: first defined here
collect2: ld returned 1 exit status
make: *** [mystart] Error 1