die Zuweisung einer const char-array ein char-array
Also ich habe eine Klasse, E-Mail, mit einer Klasse, die Daten-Mitglied, char Typ[30]; und static const char FIRST_CLASS[]; außerhalb der Klasse definition, die ich initialisieren FIRST_CLASS [], um "Erste Klasse".
In meinem Standard-Mail-Konstruktor möchte ich type auf FIRST_CLASS[] kann aber nicht scheinen, um herauszufinden, einen Weg, dies zu tun. Hier der code (etwas gekürzt, damit nicht zu belästigen Sie mit Sachen die Sie nicht brauchen)
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cstring>
#include <string>
using namespace std;
class Mail
{
public:
Mail();
Mail(const char* type, double perOunceCost, int weight);
Mail(const Mail& other);
~Mail()
{ }
private:
static const int TYPE_SIZE = 30;
static const char FIRST_CLASS[];
static const double FIXED_COST;
static const int DEFAULT_WEIGHT = 1;
char type[TYPE_SIZE];
int weight;
double perOunceCost;
};
const char Mail::FIRST_CLASS[] = "First Class";
const double Mail::FIXED_COST = 0.49;
//default
Mail::Mail()
{
weight = DEFAULT_WEIGHT;
perOunceCost = FIXED_COST;
type = FIRST_CLASS;
}
und hier ist der Fehler:
1 error C2440: '=' : cannot convert from 'const char [12]' to 'char [30]'
2 IntelliSense: expression must be a modifiable lvalue
- welche Fehlermeldung erhalten Sie?
- aktualisiert mit dem Fehler, danke für die Erinnerung
- Warum sind Sie mithilfe von arrays? Warum nicht
std::string
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht berechtigt, ein array zu einem anderen. versuchen
strcpy
Stellen Sie sicher Ziel ist mindestens so groß wie Quelle.
Hinweis:, Wenn nicht zwingend erforderlich, Sie sollten es vermeiden, array und verwenden Sie
std::string
für Zeichen-Arrays und andere STL-Container (vector
,map
.. etc.).type
zustd::string
stattdessen obwohl.Die Fehler, die Sie erhalten, nicht, weil Sie versuchen, ordnen Sie ein const char-array ein char-array (dennoch - es wird ein Fehler sein). Der Fehler, den du Berichterstattung ist, weil Sie versuchen, ordnen Sie ein array der Größe 12 ("Erste Klasse" ist 12 Zeichen lang), um ein array der Größe 30. Sie würde den gleichen Fehler auch wenn beide arrays wurden const oder non-const.
Da ist das C++ und nicht C, wie andere vorgeschlagen haben, sollten Sie std::string. Hier ist dein Beispiel mit std::string statt char-arrays.