2011-02-05 132 views
0

夥計們我是一個開始的程序員,需要幫助。我正在處理A部分工作,僅限於此處的任務:http://cs.binghamton.edu/~sgreene/cs240-2010f/labs/lab2.html簡單的C++程序幫助編譯

但是,我在編譯我的程序時遇到了問題。請告訴我在我的makefile和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 
_________________________________________________________________________________________ 

在此先感謝!

+0

要使代碼以固定寬度字體顯示,縮進它4個空格!它會更好看! – 2011-02-05 20:21:42

+0

http://cplusplus.syntaxerrors.info/index.php?title=New_types_may_not_be_defined_in_a_return_type – THEn 2011-02-05 20:29:56

回答

1

我覺得你的makefile應該看起來更像是這樣的:

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 

可能會解決你的前兩個錯誤。

+1

您還需要修復鏈接依賴關係和命令。 – 2011-02-05 20:29:30

+0

乾杯,保羅R! – Dave 2011-02-05 20:35:50

0

您在類聲明結尾缺少分號。

0

我想你在類定義的末尾忘了分號。

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

class TenStrings 
{ 
public: 
    // Default Constructor 
    TenStrings(); 
}; // <--- !!!! 
#endif 
1

您需要在類聲明結尾處使用分號。另外,你可以更簡單地重寫你的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

你不會用';'來終止TenStrings類。最後在TenStrings.h中,這是錯誤。

0

您有同樣的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