2010-05-16 140 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);