使用头文件中包含的函数时未定义的引用
Undefined reference when using a function included in a header file
我的 C++ 源文件或编译器本身遇到了一些奇怪的问题。似乎当我尝试编译该文件时,它向我发送了一条消息 -
对“Basic_int_stack::Basic_int_stack()
的未定义引用
未定义引用“Basic_int_stack::Push(int)
这是我的代码(我还是个初学者所以不要指望任何疯狂的专业代码)
头文件:
class Basic_int_stack
{
public:
// This part should be implementation independent.
Basic_int_stack(); // constructor
void push( int item );
int pop();
int top();
int size();
bool empty();
private:
// This part is implementation-dependant.
static const int capacity = 10 ; // the array size
int A[capacity] ; // the array.
int top_index ; // this will index the top of the stack in the array
};
实现:
#include "basic_int_stack.h"// contains the declarations of the variables and functions.
Basic_int_stack::Basic_int_stack(){
// the default constructor intitializes the private variables.
top_index = -1; // top_index == -1 indicates the stack is empty.
}
void Basic_int_stack::push( int item ){
top_index = top_index + 1;
A[top_index] = item ;
}
int Basic_int_stack::top(){
return A[top_index];
}
int Basic_int_stack::pop(){
top_index = top_index - 1 ;
return A[ top_index + 1 ];
}
bool Basic_int_stack::empty(){
return top_index == -1 ;
}
int Basic_int_stack::size(){
return top_index;
}
主要功能:
#include "basic_int_stack.h"
#include <iostream>
int main()
{
int var;
Basic_int_stack s1;
while((std::cin >> var)>=0){
s1.push(var);
}
return 0;
}
发生这种情况是因为您在构建主文件时没有同时构建和链接 class 实施文件。您需要以某种方式调整构建设置。
因为你编译的时候没有包含Basic_int_stack.cpp
简单的说,当你遇到Undefined reference to xxx
时,它是链接器产生的错误,这意味着编译器找不到实现。所以你需要检查是否包含cpp文件或动态库或静态库。
我遇到了同样的问题。最后,我通过在主文件中包含 .cpp 文件找到了修复方法。
#include "file_name.cpp" //In the main file
我的 C++ 源文件或编译器本身遇到了一些奇怪的问题。似乎当我尝试编译该文件时,它向我发送了一条消息 -
对“Basic_int_stack::Basic_int_stack()
的未定义引用未定义引用“Basic_int_stack::Push(int)
这是我的代码(我还是个初学者所以不要指望任何疯狂的专业代码)
头文件:
class Basic_int_stack
{
public:
// This part should be implementation independent.
Basic_int_stack(); // constructor
void push( int item );
int pop();
int top();
int size();
bool empty();
private:
// This part is implementation-dependant.
static const int capacity = 10 ; // the array size
int A[capacity] ; // the array.
int top_index ; // this will index the top of the stack in the array
};
实现:
#include "basic_int_stack.h"// contains the declarations of the variables and functions.
Basic_int_stack::Basic_int_stack(){
// the default constructor intitializes the private variables.
top_index = -1; // top_index == -1 indicates the stack is empty.
}
void Basic_int_stack::push( int item ){
top_index = top_index + 1;
A[top_index] = item ;
}
int Basic_int_stack::top(){
return A[top_index];
}
int Basic_int_stack::pop(){
top_index = top_index - 1 ;
return A[ top_index + 1 ];
}
bool Basic_int_stack::empty(){
return top_index == -1 ;
}
int Basic_int_stack::size(){
return top_index;
}
主要功能:
#include "basic_int_stack.h"
#include <iostream>
int main()
{
int var;
Basic_int_stack s1;
while((std::cin >> var)>=0){
s1.push(var);
}
return 0;
}
发生这种情况是因为您在构建主文件时没有同时构建和链接 class 实施文件。您需要以某种方式调整构建设置。
因为你编译的时候没有包含Basic_int_stack.cpp
简单的说,当你遇到Undefined reference to xxx
时,它是链接器产生的错误,这意味着编译器找不到实现。所以你需要检查是否包含cpp文件或动态库或静态库。
我遇到了同样的问题。最后,我通过在主文件中包含 .cpp 文件找到了修复方法。
#include "file_name.cpp" //In the main file