Const char foo[] = "gives me an error"

class myClass {
  public:
    const char *foo = "hello world";
};

myClass myObj1;
myClass myObj2 {myObj1};

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println((uint16_t)myObj1.foo, HEX);
  Serial.println((uint16_t)myObj2.foo, HEX);
}

void loop() {
}

Output:

117
117

The 'foo' member of myObj1 and myObj2 both point to the same memory location rather than their own character string as you might expect with copy-construction.