Cstring do Cstring c++

0

Mam banalny problem. Mam 2 zmienne CString i chce jedna do drugiej przypisac.
Przykladowo
CString Tekst1=(_T("Tekst1"));
CString Tekst2=(_T(""));
Jak do Tekst2 przypisac zawartosc Tekst1?

Sorry, zapomnialem napisac reszty :/
Ogolnie mam 2 klasy.
Klasa A ze zmienna typu CString tekst1;
Klasa B ze zmienna typu CString tekst2; oraz metoda WpiszTekst();
W klasie A wywoluje WpiszTekst(); wewnatrz ktorej ma byc przypisanie wlasnie tekst1=tekst2. I tu jest blad.
"A nonstatic member reference must be relative to specific object"
Blad ten odnosi sie do linijki:
KlasaA.tekst1=tekst2;

0

Wyjaśnij sensownie co chcesz zrobić, bo na razie wygląda na to, że nie odróżniasz klasy od obiektu.

0

masz 2 wyjścia:

  1. pole tekst1 w Klasa a zadeklaruj jako static lub
  2. Zamiast KlasaA.tekst1 = tekst2 stwórz najpierw obiekt klasy KlasaA np.
    [code]
    KlasaA obiekt;
    obiekt.tekst1 = tekst2;
    [/code]
0

po prostu w jednej klasie chce przypisac do zmiennej (zmiennych) innej klasy jakis tekst

i moze od razu drugie pytanie, jak najlatwiej zlamac linie w edit control w mfc? albo najlepiej, zeby same sie lamaly kiedy tekst sie nie miesci na szerokosc w ramce

0

Nie dziw się, że masz błąd jeżeli nie przeładowałeś operatora przypisania (operator=()).

0

a odrobine jasniej? + drugi problem ;]

0

Może o to chodzi:

 
class Dog
{
public:
    CString m_name;
};

class Cat
{
public:
    CString m_name;
};

//gdzieś w kodzie
Dog dog;
dog.m_name = "aero";

Cat cat;
cat.m_name = dog.m_name;

Lub jeśli m_name to składowa prywatna klasy to tworzysz settera typu

class Dog
{
public:
    void setName(const CString& p_name) { m_name = p_name; }
private:
    CString m_name;
}; 

//i w kodzie
Dog dog;
dog.setName(cat.m_name);

Co do automatycznego łamania linii, to odpowiedzialny za to jest styl WS_VSCROLL. Mam wersję VS Express, więc nie mam MFC, ale w winapi to wygląda tak:

DWORD editStyle = WS_CHILD|WS_TABSTOP|WS_VISIBLE|WS_VSCROLL|ES_LEFT|ES_MULTILINE;
HWND hEdit = CreateWindow(_T("EDIT"), _T("MyEdit"), editStyle, 10, 10, 200, 100, hWnd, (HMENU)123, 0, 0);

Możesz tez ustawić taki atrybut w zasobach (*.rc) o ile pamiętam, a programowo to tak jak podałem wyżej.

0

Nie do konca

class Dog
{
public:
    CString m_name;
};
 
class Cat
{
public:
    CString m_name;
};
 
//gdzieś w kodzie
Dog dog;
dog.m_name = "aero";
 
Cat cat;
cat.m_name = dog.m_name;
 

a raczej

 class Dog
{
public:
    int Dog::UstawPsa();
};

int Dog::UstawPsa()
{
    return 1;
}

extern Dog Pies;
 
class Cat
{
public:
    int m_name;
    void Cat::UstawKota();
};
 
void Cat::UstawKota()
{
 m_name=Pies.UstawPsa();
}

jak cos takiego rozwiazac? poki co pojawia sie

error LNK2001: unresolved external symbol "class Dog Pies" (?Pies@@3VDog@@A)

0

A fragmentu à propos lamania tekstu w edit control niestety nie rozumiem

0
class Dog
{
public:
    char* m_name;
};
 
class Cat
{
public:
    Cat& operator=(const Dog&);
    char* m_name;
};

Cat& operator=(const Dog& pies)
{
    this->m_name = pies.m_name; // przypisanie adresu imienia kota do ADRESU imienia psa, będą mieli DOKŁADNIE to samo imię, jak zmienisz imię psa, zmieni się imie kota i na odwrót
    return *this;
}
 
//gdzieś w kodzie
Dog dog;
dog.m_name = "aero";
 
Cat cat;
cat = dog;
0

Sorry za off-topic ale strasznie mnie ciekawi gdzie cię przymuszają do nauki tak przestarzałej technologii jaką jest MFC (niedługo 20-tka stuknie)? (tak, wiem, sporo starszych projektów jest w MFC i w MFC pozostanie, ale czemu zaczynać naukę od MFC?!?!?!?!).

1 użytkowników online, w tym zalogowanych: 0, gości: 1