c类中的static const:未定义引用

前端之家收集整理的这篇文章主要介绍了c类中的static const:未定义引用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只有一个本地使用的课程(即它的上课只是在它定义的c文件)
class A {
public:
    static const int MY_CONST = 5;
};

void fun( int b ) {
    int j = A::MY_CONST;  // no problem
    int k = std::min<int>( A::MY_CONST,b ); // link error: 
                                            // undefined reference to `A::MY_CONST` 
}

所有的代码都驻留在同一个c文件中.当在Windows上编译VS时,根本没有问题.
但是,在Linux上编译时,只能在第二个语句中获取未定义的引用错误.

有什么建议么?

解决方法

std::min<int>的参数都是const int&(而不是int),即引用int.并且您不能传递对A :: MY_CONST的引用,因为它未定义(仅声明).

在类之外的.cpp文件中提供一个定义:

class A {
public:
    static const int MY_CONST = 5; // declaration
};

const int A::MY_CONST; // definition (no value needed)

猜你在找的C&C++相关文章