2010-05-16 50 views
3

這無疑是一個簡單的問題。我曾經這樣做過,但是從C++工作到現在已經有10年左右的時間了,所以我記不起來了,我無法得到一個簡單的構造函數調用。將參數傳遞給參數類對象

這個想法是,不是解析main中的args,而是創建一個專門用於解析參數並根據需要返回它們的對象。

所以: 參數PARAMS =新的參數(ARGC,ARGV) 然後我可以叫喜歡params.getfile東西()

唯一的問題是我在Visual Studio 2008和我得到一個編譯器錯誤我確信這很簡單,但我認爲我的頭腦太生鏽了。

到目前爲止,我已經得到了什麼是真正的基本:

在主:

#include "stdafx.h" 
#include "Parameters.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
Parameters params = new Parameters(argc, argv); 

return 0; 
} 

然後在參數標題:

#pragma once 

class Parameters 
{ 
public: 
Parameters(int, _TCHAR*[]); 
~Parameters(void); 
}; 

最後的參數類:

include "Stdafx.h" 
#include "Parameters.h" 

Parameters::Parameters(int argc, _TCHAR* argv[]) 
{ 

} 

Parameters::~Parameters(void) 
{ 
} 

如果有人能看到我老化的頭腦錯過了真正明顯的地方,我將不勝感激。

在此先感謝。

回答

3

用途:

Parameters params(argc, argv); 

當你想要動態(堆)分配new運營商一般使用。它返回一個指針(參數*)。

2

的構造,爲Parameters類的析構函數具有相同的名稱作爲類本身:

而且,沒有必要調用new創建對象:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    Parameters params(argc, argv); 
    return 0; 
} 

提醒一下:下次您提到編譯器錯誤時,如果您提供編譯器的確切錯誤輸出,它將對我們有很大幫助。

0

new運算符在堆上創建一個對象。你需要一個指針來引用它。因此,你可以使用

Parameters * params = new Parameters(argc, argv); 

如果你想創建一個堆棧變量,做

Parameters params(argc, argv);