C++;具有简单类定义的未解析外部 我从C++ Visual Studio 2013中得到了一个未被理解的“未解决的外部错误”。非常感谢您的帮助。我已经将代码进一步减少到了以下形式(但是问题仍然存在):
main.cpp:C++;具有简单类定义的未解析外部 我从C++ Visual Studio 2013中得到了一个未被理解的“未解决的外部错误”。非常感谢您的帮助。我已经将代码进一步减少到了以下形式(但是问题仍然存在):,c++,class,linker,unresolved-external,C++,Class,Linker,Unresolved External,main.cpp: #include "Fibonacci.h" using namespace std; int main(void){ int RandInteger = 3; Fibonacci Fib(RandInteger); } 斐波那契 class Fibonacci{ public: Fibonacci(int n=0); protected: int m_n0, m_n1, m_n; }; Fibo
#include "Fibonacci.h"
using namespace std;
int main(void){
int RandInteger = 3;
Fibonacci Fib(RandInteger);
}
斐波那契
class Fibonacci{
public:
Fibonacci(int n=0);
protected:
int m_n0, m_n1, m_n;
};
Fibonacci.cpp:
#include "Fibonacci.h"
Fibonacci::Fibonacci(int n){
m_n0 = 0;
m_n1 = 1;
m_n = n;
}
此代码在Visual Studio 2013中产生以下错误:
错误2错误LNK1120:1未解析的外部C:\Dropbox\todo\C++\Exam\Ex2\不工作\exerce 2\fibo1\fibo1\Debug\fibo1.exe fibo1
错误1错误LNK2019:未解析的外部符号“public:u thiscall Fibonacci::Fibonacci(int)”(??0Fibonacci@@QAE@H@Z) 函数\u main C:\Dropbox\todo\C++\Exam\Ex2\引用不起作用\exerce 2\fibo1\fibo1\main.obj fibo1
我坚持,但只要我将main.cpp中的行替换为
Fibonacci Fib();
i、 我没有将整数传递给构造函数,一切都正常(它编译了一个函数,但没有按预期的那样做)
谢谢你的帮助!我真的还是卡住了。你的
main
函数应该返回int
void main(void){
应该是
int main(){
编辑:感谢otisonoza在评论中指出,某些编译器接受此main定义。除此之外,我看不出系统中出现编译器错误的任何原因。是否确实按照编写代码的方式粘贴了代码
另外,在定义main
之后,随机勾号是怎么回事
}`
此外,在.cpp文件中的每个函数后面不需要分号:
Fibonacci::Fibonacci(int na){
m_n0 = 0;
m_n1 = 1;
m_n = 2;
};
int Fibonacci::getNext(int FnM1, int FnM2){
return FnM1 + FnM2;
};
可能是
Fibonacci::Fibonacci(int na){
m_n0 = 0;
m_n1 = 1;
m_n = 2;
}
int Fibonacci::getNext(int FnM1, int FnM2){
return FnM1 + FnM2;
}
我终于发现了我的错误。事实证明,代码本身并没有什么问题,但我以某种方式破坏了我的VisualStudio项目。我确实不是这些方面的专家,但以下是对我有效的方法:
感谢你们所有人,尤其感谢奥蒂索诺扎和安圭,他们让我走上了正确的道路,代码(在他们这一方有效)没有问题,但是Visual Studio项目有问题。两个文件都是
cpp
文件的一部分(相同)Project?我成功编译了代码,在CODBROCK中,但必须将Voint main转换成int main。它是VS特定的Voint main。出于好奇,我尝试了VS 2013,它成功地编译了我。一些编译器接受它,Visual C++编译器。“谢谢,我不知道。”米迦勒:这是一个随机的想法:你是AR。不要在构造函数中使用int
参数。尝试将其用于某个对象或将其完全删除。未使用的参数通常只会导致警告,但可能您打开了一些选项来调用它们错误或执行其他操作?我不知道,我刚刚到达这里。