Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
goditsa8
15 / 15 / 3
Регистрация: 04.02.2013
Сообщений: 124
#1

Объект, который бы автоматически принимал аргументы командной строки - C++

21.11.2015, 20:44. Просмотров 185. Ответов 3
Метки нет (Все метки)

Всем привет! Покажу на примере. Пусть есть такой код:
C++
1
2
3
4
5
int main(int argc, char const *argv[]) {
    SomeClass obj(argc, argv, par1, par2);
    //...
    return 0;
}
Так вот, можно как-то избавиться от необходимости каждый раз передавать в SomeClass аргументы командной строки? Ведь они не меняются на протяжении всей работы программы. Чтобы было вот так:
C++
1
2
3
4
5
int main(int argc, char const *argv[]) {
    SomeClass obj(par1, par2);
    //...
    return 0;
}
Но при этом класс должен видеть и argc и argv.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2015, 20:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объект, который бы автоматически принимал аргументы командной строки (C++):

Аргументы командной строки - C++
Пытаюсь разобраться с этой штукой. У Дейтела это собственно только дополнение, а не отдельный пункт раздела так что всё написано сжато и с...

Аргументы командной строки - C++
Есть прога, которая считывает файл посимвольно и выводит количество повторений символов в консоль. Открытие файла происходит так: FILE...

Аргументы командной строки - C++
Уважаемые форумчане, растолкуйте, пожалуйста, назначение третьего аргумента "char *const options" в функции GetOptList . Для чего он данном...

Аргументы командной строки - C++
int main(int argc,int **argv) Понял только,что argc отвечает за количество аргументов,а argv-массив указателей на строки символов.Но...

Аргументы командной строки - C++
Необходимо открыть файл на чтение, используя аргументы main. Не хотелось бы прописывать путь к файлу, который хотим открыть. Файл помещен в...

Аргументы командной строки - C++
#include <iostream> #include <stdio.h> #include <fstream> #include <string.h> #include <Windows.h> #include <string> using...

3
Vaiz
104 / 98 / 30
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 1
21.11.2015, 20:57 #2
Как вариант объявите эти поля в классе как static

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class SomeClass
{
public:
    static int argc;
    static char **argv;
...
}
 
int main(int argc, char const *argv[]) 
{
    SomeClass::argc = argc;
    SomeClass::argv = argv;
    SomeClass obj(par1, par2);
    //...
    return 0;
}
1
goditsa8
15 / 15 / 3
Регистрация: 04.02.2013
Сообщений: 124
21.11.2015, 22:00  [ТС] #3
Цитата Сообщение от Vaiz Посмотреть сообщение
Как вариант объявите эти поля в классе как static
g++ выдает ошибку:

/tmp/ccbMWYD3.o: In function `main':
main2.cpp:(.text+0x24): undefined reference to `SomeClass::argc'
main2.cpp:(.text+0x2f): undefined reference to `SomeClass::argv'
collect2: error: ld returned 1 exit status

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class SomeClass
{
public:
    SomeClass(int, int);
    static int argc;
    static char **argv;
};
 
SomeClass::SomeClass(int a, int b) {
}
 
int main(int argc, char *argv[]) 
{
    SomeClass::argc = argc;
    SomeClass::argv = argv;
    SomeClass obj(1, 2);
 
    return 0;
}
0
Vaiz
104 / 98 / 30
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 1
21.11.2015, 22:19 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от goditsa8 Посмотреть сообщение
/tmp/ccbMWYD3.o: In function `main':
main2.cpp:(.text+0x24): undefined reference to `SomeClass::argc'
main2.cpp:(.text+0x2f): undefined reference to `SomeClass::argv'
collect2: error: ld returned 1 exit status
Нужно еще добавить эти строки, желательно в cpp файл
C++
1
2
3
4
5
6
7
8
9
#include "someclass.h"
 
int SomeClass::argc = 0;
char **SomeClass::argv = 0;
 
SomeClass::SomeClass(int a, int b)
{
 
}
1
21.11.2015, 22:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2015, 22:19
Привет! Вот еще темы с ответами:

Аргументы командной строки - C++
Здравствуйте, у меня вопрос, почему программа сбрасывается, так и не выполнив никаких действий? Я знаю , что она возвращает 0 и выходит,...

Неясность (аргументы командной строки) - C++
nextArg = 1; while (nextArg < argc) { if ((strlen(argv) > 1) && ('-' == argv)) ... } Прошу вас...

Распечатать аргументы командной строки - C++
Если первый аргумент командной строки - опция -а , то распечатать остальные аргументы без их первых символов , а если первой идет опция -r...

Передать аргументы командной строки - C++
как передать 2 аргумента для командной строки Вот я хочу передать имя входного файла и значение типа int вот как я делаю ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru