我有一个类,我在其中声明了与名称空间之外的另一个类的友谊。现在该类有一个我想访问的静态整数。
以下是代码:
var gulp = require('gulp');
var elixir = require('laravel-elixir');
var semantic = {
watch: require('./resources/assets/semantic/tasks/watch'),
build: require('./resources/assets/semantic/tasks/build')
};
gulp.task('watch-ui', semantic.watch);
gulp.task('build-ui', semantic.build);
elixir(function(mix) {
mix.task('build-ui');
});
现在,如果我编译了这段代码,我会收到以下错误:
class A
{
public:
void init();
};
namespace C
{
class B
{
friend class ::A;
private:
static int i;
};
}
void A::init()
{
C::B::i=3;
}
int main()
{
A f;
f.init();
return 0;
}
现在根据我的理解,声明就在那里,因此 /tmp/ccmDINqo.o: In function `A::init()':
friendclass.cpp:(.text+0xa): Undefined reference to `C::B::i'
collect2: error: ld returned 1 exit status
实际上是在尝试为init()
分配一个值。
我认为编译工作正常,但链接器似乎抱怨。
为什么不构建此代码,如何修复它以便构建?