All pastes #158493 Raw Edit

Stuff

public text v1 · immutable
·published 2006-09-02 04:41 UTC
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