我是一个Visual Studio 2015 c++新手,他试图在家里编写一些游戏代码。
我收到此链接错误:LNK2019未解析的外部符号"public: class std::basic_string,class std:::分配器> __thiscall display_utils::fit_int_2(int)" (?fit_int_2@display_utils@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) 在函数"public: void __thiscall bat_stats::d isp_bat_stats(struct bat_stats::bat_stats_typ)" (?disp_bat_stats@bat_stats@@QAEXUbat_stats_typ@1@@Z) 中引用
它显然不喜欢我用来从函数 fit_int_2 访问返回的字符串的字符串。 我已经在谷歌上搜索了一个解决方案,但找不到任何可以解决我的问题的东西。 请注意,在我添加fit_int_2调用之前编译和链接的代码。 如果你能帮助我,提前感谢。 代码如下:
bat_stats.h
#pragma once
class bat_stats
{
public:
struct bat_stats_typ
{
int gm;
int ab;
int ht;
int dbl;
int trpl;
int hr;
int rbi;
int sb;
int cs;
int bb;
int ibb;
int sf;
int sac;
int k;
int gidp;
int err;
float ave;
float slg;
float obp;
};
void disp_bat_hdr();
void disp_bat_stats( bat_stats_typ );
private:
int dummy;
};
bat_stats.cpp
#include <iostream>
using std::cout;
std::cin;
#include <string>
using std::string;
#include "bat_stats.h"
#include "display_utils.h"
void bat_stats::disp_bat_hdr()
{
cout << " G AB H 2B 3B HR RBI SB CS BB IW SF SH K GDP E AVE SLG OBPn";
}
void bat_stats::disp_bat_stats( bat_stats_typ bat )
{
display_utils dut;
string s;
s = dut.fit_int_2( bat.gm ); // <- the problem is here!
cout << s << bat.gm << " ";
cout << bat.ab << "nn";
}
display_utils.h
#pragma once
#include <string>
using std::string;
class display_utils
{
public:
void insert_5_lines();
string fit_int_2( int );
private:
int dummy;
};
display_utils.cpp
#include <iostream>
using std::cout;
#include "display_utils.h"
void display_utils::insert_5_lines()
{
cout << "nnnnn";
}
string fit_int_2(int i0)
{
string s0 = "";
if (i0 < 10)
{
s0 = " ";
}
return s0;
}
你需要改变
string fit_int_2(int i0)
自
string display_utils::fit_int_2(int i0)
(您需要定义成员函数 - 当前您正在定义一个不相关的全局函数。