我可以在::?中使用#define指令吗?为什么它不起作用?

Cha*_*rmy -3 c++

我写了一个B类作为A的子类来扩展它.现在我想改变一切

 a = A::create(); 
Run Code Online (Sandbox Code Playgroud)

 a = (A*)B::create(); 
Run Code Online (Sandbox Code Playgroud)

一切正常.但我不想在创建A对象的任何地方手动更改代码.所以我尝试了以下#define指令

#define A::create (A*)B::create
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用.我不知道问题是什么.有帮助吗?我可以在::?中使用#define指令吗?为什么它不起作用?

cdh*_*wie 6

问题非常简单,你不能在宏名称中使用这些字符; 它们是不被允许的,因为标准说它们不是.

宏名称只能包含字母(大写和小写),下划线和数字.(此外,它们不能以数字开头,并且以下划线后跟大写字母开头的宏和标识符名称保留供编译器和标准库使用.)

如果你使用冒号和parens等其他字符,那么你就没有有效的宏名称.

进一步阅读: