【发布时间】:2012-12-09 08:03:20
【问题描述】:
我在 C++ 中有一些简单的假设静态类:
#ifndef __STAT_H_
#define __STAT_H_
class Stat {
private:
static vector<int> v;
public:
static void add_num(int num);
static void clear_nums();
static void get_count();
};
#endif
而ccp文件是这样的:
#include "Stat.h"
vector<int> v;
void Stat::add_num(int num) {
v.push_back(num);
}
void Stat::clear_nums() {
v.clear();
}
int Stat::get_num_count() {
return v.size();
}
现在当我在 main.cpp 文件中包含“Stat.h”并尝试使用一些静态方法时:
Stat::add_num(8);
编译时的错误是
对 'Stat::add_num(int)' 的未定义引用
在这种情况下可能会出现什么问题?谢谢。
编辑:对不起地址向量,它应该是 v 那里
【问题讨论】:
-
最有可能是其中之一(我在看着你,没有链接实现):stackoverflow.com/questions/12573816/…。你也可能会觉得这很有趣:stackoverflow.com/questions/228783/…
-
你应该解释你正在使用什么编译命令,你有什么编译器。
-
命令为:g++ main.cpp
-
注意:根据标准,您的包含保护无效。所有以前导下划线后跟大写字母开头的名称都由全局命名空间中的实现保留。 (因为它是一个宏,所以包含在内)在所有上下文中都不允许使用双下划线的名称。但这与您的问题无关。
-
这个和报错无关,但是C++中没有静态类的概念。
标签: c++ file compilation header