求指点 关于extern
我定义了三个类A,B,C。B中有一个A的对象ba,C通过extern A ba 使用B中的ba。但是出现这么一个错误
>3.obj : error LNK2001: 无法解析的外部符号 "class a ba" (?ba@@3Va@@A)
1>D:\many_c++\1231231\Debug\1231231.exe : fatal error LNK1120: 1 个无法解析的外部命令
代码如下:
1.h
#pragma once
class a
{
public:
a(){}
~a(){}
void fun(int i);
};
1.cpp
#include<iostream>
#include "1.h"
using namespace std;
void a::fun(int i)
{
cout<<i;
}
2.h
#pragma once
#include "1.h"
class b
{
public:
b();
~b(){}
a ba;
};
2.cpp
#include"2.h"
b::b()
{}
3.h
#pragma once
class c
{
public:
c();
~c(){}
void f();
};
3.cpp
#include "3.h"
#include "2.h"
#include "1.h"
extern a ba;
c::c()
{}
void c::f()
{
ba.fun(2);
}
4.cpp
#include "1.h"
#include "2.h"
#include "3.h"
int main()
{
b bb;
c cc;
cc.f();
return 0;
}
>3.obj : error LNK2001: 无法解析的外部符号 "class a ba" (?ba@@3Va@@A)
1>D:\many_c++\1231231\Debug\1231231.exe : fatal error LNK1120: 1 个无法解析的外部命令
代码如下:
1.h
#pragma once
class a
{
public:
a(){}
~a(){}
void fun(int i);
};
1.cpp
#include<iostream>
#include "1.h"
using namespace std;
void a::fun(int i)
{
cout<<i;
}
2.h
#pragma once
#include "1.h"
class b
{
public:
b();
~b(){}
a ba;
};
2.cpp
#include"2.h"
b::b()
{}
3.h
#pragma once
class c
{
public:
c();
~c(){}
void f();
};
3.cpp
#include "3.h"
#include "2.h"
#include "1.h"
extern a ba;
c::c()
{}
void c::f()
{
ba.fun(2);
}
4.cpp
#include "1.h"
#include "2.h"
#include "3.h"
int main()
{
b bb;
c cc;
cc.f();
return 0;
}
...全文
相关推荐
extern用法详解extern用法详解extern用法详解extern用法详解
#### 2. extern与函数声明类似地,`extern`也可以用于函数声明。
深入理解extern用法
"深入理解extern用法,包括其在变量声明、函数声明以及与extern"C"结合使用时的规则和作用。extern关键字用于使全局变量和函数能够在多个源文件之间共享,而extern"C"则用于C++
C++中extern关键字使用
```cpp// extern.cppextern "C" { extern int i; extern void func();}```在`extern "C"`作用域内的声明将遵循C语言的规则,即使它们位于
extern用法详解
下面将详细解析extern的不同使用场景和注意事项。extern变量在C及C++编程中,extern可以用来声明变量,提示编译器在其他文件中寻找变量的定义。
C/C++ 中extern关键字详解
"C/C++ 中extern关键字详解"在C/C++编程中,extern关键字扮演着重要的角色,尤其是在处理多源文件项目时。它用于指示编译器某个变量或函数已经在其他地方被定义过,避免在当前源文件


