Простая программа составления справки C ++ - PullRequest
0 голосов
/ 05 февраля 2011

Ребята, я начинающий программист и мне нужна помощь. Я работаю над ЧАСТЬЮ ТОЛЬКО задания, расположенного здесь: http://cs.binghamton.edu/~sgreene/cs240-2010f/labs/lab2.html

Однако у меня проблемы с компиляцией моих программ. Пожалуйста, скажите мне, что я делаю неправильно в моем make-файле и в файлах cpp! Вот мои файлы:

# CS240 Lab2 Makefile 

all: lab2

lab2: lab2.o
    g++ -Wall lab2.o -o lab2

lab2.o: main.cpp
    g++ -Wall -c main.cpp -o lab2.o

lab2.o: tenstrings.cpp
    g++ -Wall -c tenstrings.cpp -o lab2.o

/*tenstrings.h*/
#ifndef TENSTRNGS
#define TENSTRNGS

class TenStrings
{
public: 
    // Default Constructor
    TenStrings();
}
#endif

/* tenstrings.cpp */

#include "TenStrings.h"

//Default Constructor
TenStrings::TenStrings()
{}

/* main.cpp */

#include "TenStrings.h"

int main()
{
    TenStrings varTen;
    return 0; 
}

Как вы можете видеть, это даже не программа, просто я начал компилировать, но я получаю кучу ошибок:

________________________________________________________________________________________
Makefile:12: warning: overriding commands for target 'lab2.o'
Makefile:9: warning: ignoring old commands for target 'lab2.o'
g++ -Wall -c tenstrings.cpp -o lab2.o
In file included from tenstrings.cpp:6:
TenStrings.h:11:3: warning: no newline at end of file
tenstrings.cpp:7: error: new types may not be defined in a return type
tenstrings.cpp:7: error: return type specification for constructor invalid
_________________________________________________________________________________________

Заранее спасибо!

Ответы [ 6 ]

1 голос
/ 05 февраля 2011

Вы не заканчиваете класс TenStrings символом ';'в конце в TenStrings.h, что является ошибкой.

1 голос
/ 05 февраля 2011

Вам нужна точка с запятой в конце объявления класса. Кроме того, вы можете переписать ваш Makefile немного проще; вам не нужна цель для каждого файла:

all: lab2

lab2: lab2.o
    g++ -Wall lab2.o -o lab2

lab2.o: main.cpp tenstrings.cpp
    g++ -Wall -o lab2.o tenstrings.cpp main.cpp
1 голос
/ 05 февраля 2011

Я думаю, ваш make-файл должен выглядеть примерно так:

all: lab2

lab2: main.o tenstrings.o
    g++ main.o tenstrings.o -o lab2

main.o: main.cpp
    g++ -Wall -c main.cpp -o main.o

tenstrings.o: tenstrings.cpp
    g++ -Wall -c tenstrings.cpp -o tenstrings.o

, который может разобрать ваши первые две ошибки.

0 голосов
/ 05 февраля 2011

Одна и та же цель make определена дважды.Тогда вы не связываете все части проекта.Это должно быть что-то вроде:

all: lab2

lab2: lab.o lab2.o
    g++ -Wall lab.o lab2.o -o lab2

lab.o: main.cpp
    g++ -Wall -c main.cpp -o lab.o

lab2.o: tenstrings.cpp
    g++ -Wall -c tenstrings.cpp -o lab2.o
0 голосов
/ 05 февраля 2011

Я думаю, что вы забыли точку с запятой в конце определения класса.

/*tenstrings.h*/
#ifndef TENSTRNGS
#define TENSTRNGS

class TenStrings
{
public: 
    // Default Constructor
    TenStrings();
}; // <--- !!!!
#endif
0 голосов
/ 05 февраля 2011

Вам не хватает точки с запятой в конце объявления класса.

...