Bitte lesen Sie die Frage, bevor Sie es als Duplikat markieren.
Also hier ist was ich versuche zu erreichen. Grundsätzlich habe ich eine Zeichenfolge, die anfänglich etwas Wert enthält.
Ich habe mein Programm in viele Klassen für Modularität aufgeteilt (Sie können eine bessere Möglichkeit vorschlagen - zur Zeit enthält jede Datei eine Klasse)
Also sagen Sie für zB ich möchte die Daten mit Klasse1 bearbeiten, dann die Die geänderte Zeichenfolge muss von Class2 usw. bearbeitet werden.
z. Initial Eintrag "Hallo Welt"
erste Klasse -> "Hallo Welt"
zweite Klasse -> "H @ l @ o WORLD"
thiid Klasse -> "# @ l @ o WORLD"
und so on ...
Überall lesen, dass globale Variablen ein großes Nein sind, wenn es um Probleme und Nachteile geht. Also denke daran, was ich am besten zwischen den Klassen teilen könnte.
Ich dachte auch, die Zeichenfolge als Zeiger auf jede Funktion übergeben, aber ich dachte, es könnte bessere Alternativen dazu geben. Bitte vorschlagen.
Danke, dass Sie vorbeischauen, um meine Fragen zu lesen und mir zu helfen.Die beste Methode zum Implementieren einer globalen Variablen für die Verwendung in der Klasse in C++
Antwort
Ohne genau zu wissen warum Sie dies tun wollen, ist es schwer zu beantworten. Aber ich sehe nicht, was mit nur falsch ist, die string
als Verweis auf jede Klasse viel wie Sie vorbei vorschlagen:
class StringModifier1 {
public:
void operator()(std::string& s) {
// modify s...
}
};
class StringModifier2 {
public:
void operator()(std::string& s) {
// modify s...
}
};
class StringModifier3 {
public:
void operator()(std::string& s) {
// modify s
}
};
int main() {
std::string myString = "hello world";
StringModifier1 modifier1;
StringModifier2 modifier2;
StringModifier3 modifier3;
modifier1(myString);
modifier2(myString);
modifier3(myString);
}
In einigen Fällen müssen Sie möglicherweise die Klassen wollen einen Zeiger speichern oder Bezug auf die Zeichenkette:
class StringModifier1 {
private:
std::string& s;
void func1() {
// modify s...
}
void func2() {
// modify s some more...
}
public:
StringModifier1(std::string& s) : s(s) {}
void execute() {
func1();
func2();
}
};
int main() {
std::string myString = "hello world";
StringModifier1 modifier1(myString);
modifier1.execute();
StringModifier2 modifier2(myString);
modifier2.execute();
StringModifier3 modifier3(myString);
modifier3.execute();
}
Möglicherweise möchten Sie eine Klasse besitzen und Zugriff auf die Zeichenfolge und die anderen Klassen verfügen über einen Zeiger oder einen Verweis auf die besitzende Klasse.
Dies war meine letzte Option bereits, wie ich in der que erwähnt .. Haben Sie andere gute Vorschläge? Kannst du meinen letzten Kommentar auf que überprüfen und vorschlagen, ob es ein guter Weg ist –
@KushanMehta Nun, ich kann nichts falsch daran sehen. Können Sie? –
Warum Klassen überhaupt verwenden? Brauchen nur drei Funktionen, die eine Zeichenfolge und eine geänderte Zeichenfolge zurückgeben. –
- 1. Die beste Methode zum Implementieren der Anforderungsbeschränkung in ASP.NET MVC?
- 2. Die beste Methode zum Speichern globaler Variablen
- 3. C# Verwendung der Variablen, die in der gleichen Klasse deklariert ist, aber in einer anderen Methode
- 4. Die beste Methode zum Implementieren von View.OnClickListener in android
- 5. iOS: Die beste Methode zum Umgang mit globalen Eigenschaften
- 6. Die beste Methode zum Implementieren von try catch in php4
- 7. Die beste Methode zum Implementieren der automatischen Vorschlagsfunktion?
- 8. beste Möglichkeit zum Erstellen einer globalen Variablen in Spring MVC
- 9. Die beste Methode zum Implementieren des Admin-Steuerfelds in CakePHP
- 10. Die beste Methode zum Implementieren von Paging in Abfragen
- 11. Die beste Methode zum Implementieren eines schmutzigen Flags in EF
- 12. Die beste Methode zum Implementieren von Singleton in einer Konsolenanwendung C#?
- 13. Die beste Methode der Textdateianalyse in C#?
- 14. Die Verwendung einer Python-Methode in einer Klasse zum Überprüfen von Variablen sind die gleichen in einem anderen Klassenobjekt
- 15. Die beste Methode zum Planen von Aufgaben in C#
- 16. SQL/C# - Die beste Methode zum Ausführen einer Abfrage
- 17. Beste Methode zum Speichern in nsuserdefaults für benutzerdefinierte Klasse?
- 18. Die beste Methode zum Implementieren von Repository Pattern?
- 19. Die beste Methode zum Entfernen von dupliziertem Code in C#
- 20. Festlegen der globalen Variablen für die Dauer einer Anforderung
- 21. Die beste Methode zum Implementieren von Self-Updating-Software
- 22. Die beste Methode zum Implementieren der Ablehnung einer Wertänderung durch den Benutzer in Swing?
- 23. Der beste Weg, um eine Klasse mit globalen Variablen hinzuzufügen, die Wert in ASP.NET MVC
- 24. Was ist die beste Methode zum Erstellen einer Netzwerkpaketstruktur/Klasse in C#?
- 25. Die beste Methode zum Floaten?
- 26. Die beste Methode zum Implementieren einer asynchronen "loadData" -Methode mit dem MVVM-Muster
- 27. Was ist die beste Methode für die Verwendung der Sperre in geerbten Klassen
- 28. Die beste Methode zum Anzeigen von schreibgeschütztem Text in C#
- 29. Die beste Methode zum Abfragen eines Wörterbuchs in C#
- 30. Alternativen der globalen Variablen in c
Es ist nichts falsch mit globalen Variablen. Geben Sie denken, dass sie uns nur ermutigen, nicht faul zu sein, was gut ist. Eine Sache, die Sie tun können, ist diese Variable als geschützt in einer Basisklasse zu setzen. DANN erben alle anderen Klassen von der Basisklasse. Sie haben jetzt alle Zugriff auf die Basisklassenvariable. –
Ich dachte, aber wie wäre es möglich, dass sie alle die gleichen Daten der Basisklasse (der gleiche Wert im ganzen) teilen, wenn das individuelle Objekt jeder Klasse erstellt wird? –
Ah, natürlich. Zu früh am Morgen. Es tut uns leid. –