Всем привет!
Вот, хотел сделать что-то типа вот этого:
#include "stdafx.h"
#include <string>
using namespace std;
class SOME
{
public:
SOME(string str=""):m_Str(str){}
virtual ~SOME(){}
private:
string m_Str;
};
class ANOTHER
{
public:
ANOTHER(){}
virtual ~ANOTHER(){}
void SetSome(SOME some){m_Some=some;}
private:
SOME m_Some;
};
int main(int argc, char* argv[])
{
printf("Hello World!\n");
ANOTHER an1;
//если так...
an1.SetSome("hello!");
//то компилятор ругается:
//error C2664: 'SetSome' : cannot convert parameter 1 from 'char [7]' to 'class SOME'
//No constructor could take the source type, or constructor overload resolution was ambiguous
//а вот так...
an1.SetSome(string("hello!"));
//уже работает, хотя передаем в качестве аргумента все равно
//НЕ объект типа SOME, но тут он уже соображает его создать
return 0;
}
Внесите, плз, ясность. Это только со string-ом и char-ом так, или есть какое-то фиксированное число... "вложенностей" что-ли при таких вот неявных преобразованиях, или как это назвать даже не знаю

Вообщем-то, оно не напрягает, но вроде как первый (нерабочий) вариант удобнее, и на этапе отладки, да и потом тоже, из виндовых функций сразу char* забирать... Или придется еще один конструктор для SOME писать? Или можно как-то по другому выкрутится?
Спасибо.