c ++ - Zuweisen einer Zeichenfolge zu null

Lerne ich C++ auf meinem eigenen. Ich habe folgenden code, aber es gibt Fehler.

#include <iostream>
#include <string>
using namespace std;


int setvalue(const char * value)
{
    string mValue;
    if(value!=0)
    {
       mValue=value;
    }
    else
    {
       mValue=0;
    }
}

int main ()
{
 const char* value = 0;
 setvalue(value);

 cin.get();
 return 0;
}

So wollen, um eine Funktion zu erstellen, welche akzeptiert char-Zeiger und ich möchte einen Zeiger übergeben. Die Funktion weist der Zeiger auf den member-Variablen. Ich bin vorbei ein null-Zeiger absichtlich. Folgendes ist der Fehler, die ich immer bin:

 D:\CPP\TestCP.cpp In function `int setvalue(const char*)': 

 note C:\Dev-Cpp\include\c++\3.4.2\bits\basic_string.h:422 candidates are: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>] 

 note C:\Dev-Cpp\include\c++\3.4.2\bits\basic_string.h:422                 std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>] 

 note C:\Dev-Cpp\include\c++\3.4.2\bits\basic_string.h:422                 std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(_CharT) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>] 

es ist im Grunde beschweren sich über Zeile: mValue=0;

Warum gibt es Klagen über diese Linie? Ich kann nicht eine null zuweisen einer Zeichenfolge?

Kommentar zu dem Problem
Was sind Sie versuchen zu erreichen, indem Sie es auf 0? Kommentarautor: James McLaughlin
Der Zweck der Funktion ist es, den char* an die Funktion übergeben, und weisen Sie Sie, um es ein Mitglied string-variable. Also ich überprüfe zuerst, ob es null ist, wenn es null ist, dann statt der Dereferenzierung eines null-Zeiger ist, ich bin durch das zuweisen von null zu Zeichenkette. Also der Zweck ist, zu haben mValue und Wert zu enthalten ähnliche Werte. Danke. Kommentarautor: Maria
Aber mValue = Wert; würde nur tun, mValue = 0; wenn value ist ein null-Zeiger, wenn mValue = 0; gültig waren, so dass die zusätzliche Kontrolle ist nicht wirklich etwas tun. Es wäre genauso hinfällig. Kommentarautor: hvd
Vielleicht möchten Sie sich in boost::optional, wenn Sie sind auf der Unterscheidung zwischen einem leeren string und kein string. Kommentarautor: chris
@Maria - Sie können nicht lernen, C++, indem Sie versuchen es selbst, Sie müssen ein gutes Buch. Auch gcc 3.4.2 ist nicht ein guter compiler nicht mehr, es ist sehr alt. Kommentarautor: Bo Persson

InformationsquelleAutor der Frage Maria | 2012-07-23

Schreibe einen Kommentar