PROGMEM question

I have a block of static text (80 characters) as an attribute of class (each class member would have it's own 80 character block), how do I get it into PROGMEM?

I guess the bigger question is how do I get it back out.

Here is the class:

#include "Arduino.h"
#include "Car.h"

Car::Car(char* cname, uint8_t m_gear, uint8_t hand, uint8_t am0,uint8_t am1,uint8_t am2, uint8_t am3,uint8_t m_hull, char* txt)
{
  
   car_name = new char[12];
   strcpy(car_name, cname);
   hazards = 0;
   max_gear = m_gear;
   curr_gear = 1;
   handling = hand;
   ammo[0] = am0;
   ammo[1] = am1;
   ammo[2] = am2;
   ammo[3] = am3;
   //ammo[4] = {am[0],am[1],am[2],am[3]};
   max_hull = m_hull;
   curr_hull = m_hull;
   canActivate = true;
   textBlock = txt;
   
}

And the code that compiles, but is giving me "garbage text":

#include "Car.h"


//Car(char* cname, uint8_t m_gear, uint8_t hand, uint8_t am0,uint8_t am1,uint8_t am2, uint8_t am3,uint8_t m_hull);
const PROGMEM char trainText[] = ("Test2");
const PROGMEM char bikeText[] = ("Test3");


Car train(" Conductor  ", 3,2,1,1,2,1,14,trainText);
Car bike("  Blujeans  ", 6,4,2,1,2,1,4, "test text");

 
const uint8_t totalCars = 2;
uint8_t currCar = 0;
Car* carArray[totalCars] = {&train, &bike};


void setup()
{
  Serial.begin(115200);

}

void loop()
{
  Serial.println(carArray[currCar]->textBlock);
}

https://www.arduino.cc/reference/en/language/variables/utilities/progmem/

For character pointers pointing to PROGMEM you can cast them to "__FlashStringHelper *" and the .print() and .println() will know to fetch the characters from PROGMEM. For other uses you have to pass the address of each byte to pgm_read_byte(address) to get the byte from PROGMEM instead of RAM.

const PROGMEM char trainText[] = ("Test2");


void setup()
{
  Serial.begin(115200);
}


void loop()
{
  const char * textBlock;
  textBlock = trainText;
  Serial.println((__FlashStringHelper *)textBlock);
}