Wie Konstruktor als Parameter übergeben bekommen?

Alex1993

Neues Mitglied
C++:
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class car {
public:
  string brand;
  int ps;
};
car() { cout << "es wurde ein neues Auto erstellt "; };
void printcar(const car &Car) { cout << Car.ps << Car.brand; };
int main(int argc, const char *argv[]) {
  string b = "hallo ";
  cout << b;
  car c;
  c.brand = "Bmw ";
  c.ps = 33333;
  printcar(c);
  return 0;
 
Zuletzt bearbeitet von einem Moderator:
C++:
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class car {
public:
  string brand;
  int ps;
  void printcar() { cout << Car.ps << Car.brand; }
};
int main(int argc, const char *argv[]) {
  string b = "hallo ";
  cout << b;
  car c;
  c.brand = "Bmw ";
  c.ps = 33333;
  printcar();
  return 0;
 
Zuletzt bearbeitet von einem Moderator:
Er soll es übergeben es übergeben bekommen , damit sicher ist , dass das Auto unten eine Marke und eine PS Zahl hat


Ich wollte wissen wie der Code aussieht, wenn ich will, dass sicher das Auto eine PS und Marke hat, also z.B. 333 und BMW, dass der Code nicht durchläuft, falls kein PS ... da ist. Ich wollte es wissen, wie ich es mit einem Konstruktor mache, also das da z.B. steht

C++:
car(string brandparameter, int psparameter) {
  brandparameter = brand;
  psparameter = ps
}

oder so. Wie schaut der Konstruktor da richtig aus?

Ich wollte es auch so machen, dass unten steht:

C++:
car c;
c("bmw ", 330);

sodass bmw und 330 oben als Parameter übergeben wird. Leider funktioniert irgendwas nicht. Da ist ein Fehler und ich verstehe nicht, welcher.
 
Zuletzt bearbeitet von einem Moderator:
Man kann Beiträge auch editieren. Du hast deine Frage auf 3 Threads verteilt und keine Codeblöcke benutzt.

Wenn du das etwas zusammenhängender postest sind die Leute sicher auch eher geneigt, dir zu antworten.


Leider funktioniert irgendwas nicht. Da ist ein Fehler und ich verstehe nicht, welcher.

Was für ein Fehler? Warum nicht die Fehlermeldung posten?

Hier nochmal als Codeblock, glaube ich:
C++:
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

class car {
public:
  string brand;
  int ps;

  car(string brandparameter, int psparameter) {
    brand = brandparameter;
    ps = psparameter;
  }

  void printcar() { cout << ps << brand; }
};

int main(int argc, const char *argv[]) {
  string b = "hallo ";
  cout << b;

  car c("bmw ", 330);
  c.printcar();
  return 0;
}
 
@Mat Danke für dein Hinweis.

@Alex1993 Ich muss ehrlich gesagt zugeben, dass ich schon überlegt habe, deine Threads zu löschen und dich aufzufordern, das Ganze nochmal neu und strukturiert zu posten. Über drei Threads verteilt eine Frage zu stellen, dabei in zwei Threads nur Code unformartiert zu posten und dann noch solch lange und nichtssagende Fragen direkt in den Titel zu packen (ohne weitere Erklärung), ist echt ein No-Go.

Du hast aber nochmal Glück gehabt, da Mat schon so nett war, ein bisschen Ordnung reinzubringen und dir zu antworten.
Ich habe daher deine drei Threads in einen zusammengeführt und wenn du nun noch einen aussagekräftigen Titel wählst, ist alles schon strukturiert, sodass man dir auch helfen kann.

Edit:
Ein Moderator war schon so nett, einen anderen Titel festzulegen. Wenn der dein Problem so gut beschreibt, kannst du das selbstverständlich einfach so lassen.
 
Zuletzt bearbeitet:
Etwa so, würde ich sagen
C++:
// clang-format off
#include <iostream>
#include <string>
#include <string_view>

class car
{
public:
  std::string brand;
  int ps;

  car(std::string_view brandparameter, int psparameter) :
    brand{ brandparameter }, ps{ psparameter }
  {
  }

  void printcar() const
  {
    std::cout << ps << ' ' << brand << std::endl;
  }
};

int main()
{
  constexpr std::string_view b = "hallo ";
  std::cout << b;

  const car c{ "bmw", 330 };
  c.printcar();

  return 0;
}
// clang-format off

Edit: Whoa, die Code Formatierung macht immer noch Nonsens ...
 
Zurück
Oben Unten