这无疑是一个简单的问题。我之前曾经这样做过,但是自从我在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)
{
}
我很感激,如果有人能够看到我老化的心灵错过了真正明显的地方。
提前致谢。
答案 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);