- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问候。
我已经搜索了解决方案,但我认为这个问题是特定于个人代码的,因此我在这里发帖。
我开门见山
在我的主体中,我有两个对象。
Computer *computer = new Computer();
Player *player = new Player();
在计算机类中,标题中有以下内容:
private:
Strategy *strategy;
int winningPosition;
int twoInRow;
int counter;
int makeTwo;
然后在 Computer.cpp 中:
Computer::Computer(char token, bool hasTurn)
{
m_token = token;
m_hasTurn = hasTurn;
strategy = new Strategy();
}
int Computer::getMove(const char (&board)[9])
{
twoInRow = strategy->checkTwoInRow(board);
counter = strategy->counter(board);
makeTwo = strategy->makeTwo(board);
if(twoInRow != 0)
{
return twoInRow - 1;
} else if(counter != 0) {
return counter - 1;
} else if(makeTwo != 0) {
return makeTwo - 1;
} else {
return 0;
}
}
此时我觉得问题来了。
从 Strategy 类调用的方法都需要了解棋盘,因此:
int checkTwoInRow(const char (&board)[9]);
int counter(const char (&board)[9]);
int makeTwo(const char (&board)[9]);
我遇到的问题,无法编译:
Error 1 error LNK2019: unresolved external symbol "public: int __thiscall Strategy::makeTwo(char const (&)[9])" (?makeTwo@Strategy@@QAEHAAY08$$CBD@Z) referenced in function "public: int __thiscall Computer::getMove(char const (&)[9])" (?getMove@Computer@@QAEHAAY08$$CBD@Z) C:\CPP\TTT\Computer.obj tictactoeCPP
Error 2 error LNK2019: unresolved external symbol "public: int __thiscall Strategy::counter(char const (&)[9])" (?counter@Strategy@@QAEHAAY08$$CBD@Z) referenced in function "public: int __thiscall Computer::getMove(char const (&)[9])" (?getMove@Computer@@QAEHAAY08$$CBD@Z) C:\CPP\TTT\Computer.obj tictactoeCPP
Error 3 error LNK2019: unresolved external symbol "public: int __thiscall Strategy::checkTwoInRow(char const (&)[9])" (?checkTwoInRow@Strategy@@QAEHAAY08$$CBD@Z) referenced in function "public: int __thiscall Computer::getMove(char const (&)[9])" (?getMove@Computer@@QAEHAAY08$$CBD@Z) C:\CPP\TTT\Computer.obj tictactoeCPP
作为一个 c++ 菜鸟,我完全不知道为什么会出现这个问题,也不知道这个问题是如何引起的。我认为它必须对计算机类中 Strategy 的实例化或在方法调用中从计算机给策略的参数做一些事情。
任何人都可以解释为什么会出现此错误,我根本不明白该错误。以及如何解决/预防这种情况?
编辑*
我刚收到一个共享 Strategy 类的请求:
策略.h:
#pragma once
class Strategy
{
public:
Strategy(void);
~Strategy(void);
int checkTwoInRow(const char (&board)[9]);
int counter(const char (&board)[9]);
int makeTwo(const char (&board)[9]);
};
该类定义了这些方法,我不会发布它们,因为它们很长。
最佳答案
这是一个链接错误,与实例化或参数无关。
您还没有为链接器提供这些函数的定义。如果您在 Strategy.cpp 中定义它们,则需要对其进行编译并将其作为参数添加到链接器。你如何做到这一点完全取决于你使用什么工具来构建你的程序。
如果您使用的是 Visual Studio(或任何其他 IDE),一旦您将 Strategy.cpp 添加到您的项目中,它应该会自动处理它。
或者您是这样定义它们的:
int checkTwoInRow(const char (&board)[9])
{
// Do something with board the wrong way
}
而不是像这样:
int Strategy::checkTwoInRow(const char (&board)[9])
{
// Do something with board the right way
}
第一个没有定义 Strategy 成员函数,它定义了一个全局函数。
关于C++ LNK2001 : unresolved external symbol problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647456/
节点版本:v6.11.0 错误信息: Unable to resolve path to module './coins.json'. (import/no-unresolved) 我还附上错误的屏幕
我的 flutter 应用程序运行良好,直到我停止成功构建的日子 android/app/src/main/kotlin/com/apps/myapp/MainActivity.kt 文件 packa
我在使用 kotlin 版本 1.3.41 的 kotlin 项目中遇到问题 Unresolved reference :我无法找出为什么会出现该问题?。我也降级了 kotlin 版本但没有效果。 当
在编译我的代码时,我收到此错误。 1>MSVCRTD.lib(crtexe.obj):错误 LNK2019:函数 ___tmainCRTStartup 中引用了未解析的外部符号 _main1>C:\U
我一直遇到这两个错误,但我似乎找不到有效的解决方案。 LNK1120: 1 unresolved externals Error 1 error LNK2019: unresolved externa
我想使用 SQLite,但出现 Unresolved -* 错误。以下是我所做工作的总结: 这是三个目录: 源文件 -->include -->src -->sqlite3 我已将以上三个目录全部添加
我在尝试构建时收到以下错误: 1> MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 r
我在构建程序时不断收到“未解析的外部符号”错误。但是,该程序编译正常。我正在使用 GLFW 和 GLAD 库。 #include #include #include void framebuff
我是谷歌测试框架的新手。这是我的第一个谷歌测试测试项目。我做了像这个网站http://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php这样
当我尝试编译我的代码时,我遇到了两个错误。我已经定义了 win32 控制台应用程序。我什至还没有开始编码。我的配置如下 - 链接器 - 子系统 - 控制台;链接器 - 高级 - 入口点 - 空白。
我尝试构建我的应用程序,但失败了,仅显示一条消息: Failed to resolve: play-services-basement 我的应用程序昨天成功构建。自昨天成功构建以来,没有代码更改。我的
任务是找到所有可表示为两个自然数的开方之和的二值数。我试试这个: func = [sqrt (x) + sqrt (y) | x a -> a mod :: Integral a => a -> a
Kotlin: Unresolved reference: totalFee 我只是在做这个小虚拟程序来练习,但它说totalFee尝试将值打印到屏幕时未解决。我已经看了一段时间了,不知道为什么。da
我正在编写一个小程序来判断字符串数组向前和向后读取是否相同。现在我的程序应该返回 false。我遇到了一些困难,因为当我扫描数组时,我希望第二个 for 循环扫描第一个 for 循环所在的相同索引,但
请问有人可以针对我的问题发布错误更正并经过测试的代码吗?程序确实 - 22.php 具有以下形式。当用户输入并单击“提交”按钮时,结果应从 23.php 中获取并显示在 22.php 上的 div 中
当我编译它时给出错误信息: usimage.cpp Generating Code... Linking... Creating library .\Output/gci2.lib and ob
我有以下项目文件: //connections.cpp #include "stdafx.h" #include "LibraryHeaders.h" #include "FileManager.h"
我正在写一个游戏,但我遇到了一个问题,导致“C++ Unresolved external 问题” ** 我的类(class):** Terrain.h Class Terrain {}; 物理对象.
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在使用 Visual Studio 2012 完成编程原则和实践中的练习。尝试编译下面的源代码时,我遇到了链接器错误: unresolved symbol int foo. 我不明白为什么符号没有
我是一名优秀的程序员,十分优秀!