Передать аргументы объекту класса параметра - PullRequest
3 голосов
/ 16 мая 2010

Это, несомненно, простой вопрос. Раньше я делал это раньше, но прошло около 10 лет с тех пор, как я работал в C ++, поэтому я не могу вспомнить правильно и не могу заставить работать простой вызов конструктора.

Идея состоит в том, что вместо парсинга аргументов в main, main создаст объект, специально предназначенный для синтаксического анализа аргументов и возврата их по мере необходимости.

Итак: Параметры 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 ]

3 голосов
/ 16 мая 2010

Использование:

Parameters params(argc, argv);

Оператор new обычно используется, когда требуется динамическое (кучное) распределение. Возвращает указатель (параметр *).

2 голосов
/ 16 мая 2010

Конструктор и деструктор для класса 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; 
} 

Просто напоминание: в следующий раз, когда вы упомянете об ошибке компилятора, это очень нам поможет, если вы предоставили точный вывод ошибки от компилятора.

0 голосов
/ 16 мая 2010

new оператор создает объект в куче. Вам нужен указатель для ссылки на него. Следовательно, вы бы использовали

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

Если вы хотите создать переменную стека, выполните

Parameters params(argc, argv);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...