将参数传递给参数类对象

时间:2010-05-16 07:01:20

标签: c++ visual-studio-2008 visual-c++

这无疑是一个简单的问题。我之前曾经这样做过,但是自从我在C ++工作以来已经有10年了,所以我记不起来了,我无法让一个简单的构造函数调用工作。

这个想法是,不是在main中解析args,而是创建一个专门用于解析参数的对象,并根据需要返回它们。

所以: 参数params = new参数(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);
};

最后在Parameters类中:

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

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

}

Parameters::~Parameters(void)
{
}

我很感激,如果有人能够看到我老化的心灵错过了真正明显的地方。

提前致谢。

3 个答案:

答案 0 :(得分:3)

使用:

Parameters params(argc, argv);

当您需要动态(堆)分配时,通常使用new运算符。它返回一个指针(参数*)。

答案 1 :(得分:2)

Parameters类的构造函数和析构函数必须与类本身的名称相同:

// In the header file:
class Parameters 
{ 
public: 
    Parameters(int, _TCHAR*[]); // Not TABOnlineScraperParameters
    ~Parameters(); 
};

// In the source file:
Parameters::Parameters(int, _TCHAR*[])
{
}

Parameters::~Parameters()
{
}

此外,无需调用new来创建对象:

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

提醒一下:下次提到编译器错误时,如果您提供了编译器的确切错误输出,它将对我们有很大的帮助。

答案 2 :(得分:0)

new 运算符在堆上创建一个对象。你需要一个指针来引用它。因此,你会使用

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

如果要创建堆栈变量,请执行

Parameters params(argc, argv);