大佬教程收集整理的这篇文章主要介绍了VC警告C4356:无法通过派生类初始化静态数据成员,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <string> #include <iostream> class A { public: static const std::string st; }; class B : public A { }; const std::string B::st = "abcd"; //warning C4356: 'A::st': static data member cannot be initialized via derived class int main() { std::cout << A::st << std::endl; // outputs "abcd" std::cout << B::st << std::endl; // outputs "abcd" }
clase D :public A { }; const std:string d:st = "efgh";
即使编译器只告诉警告它可能依赖于链接顺序A :: st的内容.它可能是“abcd”或“efgh”但是d :: st将是“abcd”或B :: st将是“efgh”你不能为B定义“abcd”而为D定义“efgh”因为它是静态的.
以上是大佬教程为你收集整理的VC警告C4356:无法通过派生类初始化静态数据成员全部内容,希望文章能够帮你解决VC警告C4356:无法通过派生类初始化静态数据成员所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。