Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
goditsa8
15 / 15 / 3
Регистрация: 04.02.2013
Сообщений: 124
#1

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

21.11.2015, 20:44. Просмотров 202. Ответов 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.
http://www.cyberforum.ru/cpp-beginners/thread634979.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2015, 20:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объект, который бы автоматически принимал аргументы командной строки (C++):

Аргументы командной строки
Есть прога, которая считывает файл посимвольно и выводит количество повторений...

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

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

Аргументы командной строки
Уважаемые форумчане, растолкуйте, пожалуйста, назначение третьего аргумента...

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

3
Vaiz
104 / 98 / 40
Регистрация: 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 / 40
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 1
21.11.2015, 22:19 #4
Лучший ответ Сообщение было отмечено goditsa8 как решение

Решение

Цитата Сообщение от 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2015, 22:19
Привет! Вот еще темы с решениями:

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

Аргументы командной строки (АКС)
Доброго времени суток! Почему при объявлении АКС мы используем указатель на...

Передать аргументы командной строки
как передать 2 аргумента для командной строки Вот я хочу передать имя входного...

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


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

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

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