链接静态 class 成员函数抛出未定义的引用错误 C++
linking static class member function throws undefined reference error c++
关于此类问题,我已经经历过许多类似的话题,但我仍然无法解决此错误。任何帮助将不胜感激。
/*samp.h header file*/
#include<iostream>
using namespace std;
class test
{
private:
test();
public:
static void const_caller();
};
/*samp.cpp file*/
#include<iostream>
using namespace std;
class test
{
private:
test()
{
cout<<"priv cont called\n";
}
public:
static void const_caller()
{
cout<<"calling priv const\n";
}
};
/*main.cpp file */
#include"samp.h"
using namespace std;
int main(int argc, char **argv)
{
test::const_caller();
}
当我做的时候
g++ samp.cpp main.cpp -o main.out
我收到这个错误
/usr/bin/ld: /tmp/ccHZVIBK.o: in function `main':
main.cpp:(.text+0x14): undefined reference to `test::const_caller()'
我已经有一段时间无法解决这个问题了。
使用您发布的代码,.cpp 文件包含它自己的 class 定义,它与 .h 文件中的 class 同名,但实际上是不同的 class.
.cpp文件中,需要使用:
test::test()
{
cout<<"priv cont called\n";
}
void test::const_caller()
{
cout<<"calling priv const\n";
}
在 samp.cpp
文件中再次定义测试 class。
您需要包含 samp.h
header 并实现 test
class:
的方法
#include "samp.h"
using namespace std;
test::test()
{
cout << "priv cont called\n";
}
void test::const_caller()
{
cout << "calling priv const\n";
}
关于此类问题,我已经经历过许多类似的话题,但我仍然无法解决此错误。任何帮助将不胜感激。
/*samp.h header file*/
#include<iostream>
using namespace std;
class test
{
private:
test();
public:
static void const_caller();
};
/*samp.cpp file*/
#include<iostream>
using namespace std;
class test
{
private:
test()
{
cout<<"priv cont called\n";
}
public:
static void const_caller()
{
cout<<"calling priv const\n";
}
};
/*main.cpp file */
#include"samp.h"
using namespace std;
int main(int argc, char **argv)
{
test::const_caller();
}
当我做的时候
g++ samp.cpp main.cpp -o main.out
我收到这个错误
/usr/bin/ld: /tmp/ccHZVIBK.o: in function `main':
main.cpp:(.text+0x14): undefined reference to `test::const_caller()'
我已经有一段时间无法解决这个问题了。
使用您发布的代码,.cpp 文件包含它自己的 class 定义,它与 .h 文件中的 class 同名,但实际上是不同的 class.
.cpp文件中,需要使用:
test::test()
{
cout<<"priv cont called\n";
}
void test::const_caller()
{
cout<<"calling priv const\n";
}
在 samp.cpp
文件中再次定义测试 class。
您需要包含 samp.h
header 并实现 test
class:
#include "samp.h"
using namespace std;
test::test()
{
cout << "priv cont called\n";
}
void test::const_caller()
{
cout << "calling priv const\n";
}