Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > operator+ (char *str1, char *str2)


Автор: vase 25.9.2008, 12:53
Ткните носом туда, где указано как перегрузить operator+ для двух char* возвращаемое значение либо char* либо std::string

Автор: Mayk 25.9.2008, 12:55
Цитата(vase @  25.9.2008,  16:53 Найти цитируемый пост)
Ткните носом туда, где указано как перегрузить operator+ для двух char* возвращаемое значение либо char* либо std::string 

нигде. для перегрузки оператора х б один операнд должен иметь определенный пользователем тип

Автор: vase 25.9.2008, 12:56
не понял...

Автор: mrbrooks 25.9.2008, 13:07
vase, перегрузку делают для пользовательских типов - к примеру для класса  smile

Добавлено через 1 минуту и 1 секунду
vase, для твоего случая годится и strcat()

Автор: vase 25.9.2008, 13:08
эм.. а как мне тогда сделать так, чтобы сработала след констуркция SYSCONFDIR+"/"+PACKAGE_NAME+"/server.conf" 
где SYSCONFDIR и PACKAGE_NAME имеют тип char[] ?

Автор: mrbrooks 25.9.2008, 13:09
strcat  smile 

Автор: W4FhLF 25.9.2008, 13:14
Код

std::string s = std::string(SYSCONFDIR) + "/" + std::string(PACKAGE_NAME) + "/server.conf"


Автор: Lazin 25.9.2008, 13:27
SYSCONFDIR - так можно называть макросы, но никак не переменные

если SYSCONFDIR и PACKAGE_NAME - макросы, то можно так
Код

#define MY_PATHNAME      SYSCONFDIR PACKAGE_NAME "/server.conf"

Автор: mrbrooks 25.9.2008, 13:32
а если SYSCONFDIR и PACKAGE_NAME - константы?

Автор: vase 25.9.2008, 13:49
Цитата(Lazin @ 25.9.2008,  13:27)
SYSCONFDIR - так можно называть макросы, но никак не переменные

если SYSCONFDIR и PACKAGE_NAME - макросы, то можно так
Код

#define MY_PATHNAME      SYSCONFDIR PACKAGE_NAME "/server.conf"

SYSCONFDIR - константа и задатеся в config.h который генерируется посредством autotools

Автор: Lazin 25.9.2008, 13:54
если имеет место быть:
Код

#defing SYSCONFDIR "/blablabla1"
#define PACKAGE_NAME "/blablabla2"

то
Код

#define MY_PATHNAME      SYSCONFDIR PACKAGE_NAME "/server.conf"

приведет к тому, что:
MY_PATHNAME будет равно 
Код

"/blablabla1/blablabla2/server.conf"

Автор: bsa 25.9.2008, 13:56
vase, ты путаешь константы и макросы:
Код
#define TEXT "xxx" //это МАКРОС: вместо TEXT везде подставляется "xxx"
const char * const text = "xxx"; //это константный указатель на константную область памяти, которая содержит текст "ххх"
Итак, если у тебя макросы, то ты можешь легко делать следующие конструкции:
Код
#define VERSION "1.0"
#define BUILD "100"
printf("%s\n", "my version = " VERSION "." BUILD);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)