2012-11-05 41 views
1

我目前正在學習C++(通過Koenig & Moo加速C++工作),最近我決定在Windows中使用MS visual C++。以前,我只用vim和G ++在Linux中完成了所有編程。我想實現一個類,沒什麼特別的,只是一本名爲Vec的書中的示例類,而我從來沒有在Visual C++中做過這個。所以,我選擇「新建項目」 - >「類庫」,我面對這樣的:Visual C++類庫

// Vec.h 

#pragma once 

using namespace System; 

namespace Vec { 

public ref class Class1 
{ 
    // TODO: Add your methods for this class here. 
}; 
} 

現在,我知道這本書是不針對任何特定的開發環境,但幾乎沒有這些東西和我在那裏見過的一樣。我只看過頭文件中這樣定義類:

#ifndef VEC_H 
#define VEC_H 

class Vec { 
public: 
    // things here 

private: 
    // other things here 
}; 

#endif 

是類庫別的東西,或這本書我讀過時了嗎?任何人都可以給我一些關於發生了什麼的概念以及這兩個定義有何不同?

+2

看起來不像C++。可能是C++/CLI?微軟在你沒有明確說明的情況下會粘上一大堆非標準的垃圾。他們也使用'#pragma'而不是包含守衛,並且在標題中小心地使用'namespace'。您可以刪除他們的模板並重新開始。 –

+4

這本書並沒有過時。你遇到的不是標準的C++。 – juanchopanza

+0

順便說一句,你對你的C++示例是絕對正確的,書籍通常不知道具體的平臺/實現。好樣的! –

回答

3

您選擇創建一個.NET類庫。 Visual C++可以編譯轉換爲.NET程序和庫的C++/CLI代碼。這幾乎肯定不是你想要的。

選擇其中一個「Win32」項目類型,而不是「Win32控制檯應用程序」,以獲得包含標準C++代碼的項目。

如果你想要一個新的類,你不應該使用「新建項目」對話框。 「新建文件」對話框提供了用於C++頭文件,源文件和其他有用內容的模板選項。

+0

我認爲這有點像「空項目」模板(有一段時間沒有使用過VS)。如果是這樣,那麼這對初學者來說可能是最好的嘗試。 – Cubic

+0

@Cubic:創建一個Win32控制檯應用程序以啓動一個空項目時有一個選項 - 您可以爲標準C++代碼正確設置構建選項,並且不需要源文件。另一方面,「空項目」模板是無用的 - 它不會構建任何東西,你必須提供一個makefile。 –

+0

@ BenVoigt:空項目幾乎是Win32控制檯應用程序(儘管我還沒有設置)。添加一個.cpp文件和一個'main',它會很好地構建。 –

2

您選擇了使用.NET框架的C++/CLI模板(請參閱:ref class)。這實際上是一種完全不同的語言。我個人總是選擇空白的項目爲一個DLL或簡單的EXE(我說「簡單」,因爲,如果我做的東西像一個MFC用戶界面,我用他們的模板添加所有的廢話樣板代碼)和根據需要添加我的文件/配置。