繁体   English   中英

具有简单类定义的C ++外部解析

[英]C++ unresolved externals with simple class definition

我一直从Visual Studio 2013的C ++中得到一个无法理解的“未解决的外部错误”。到目前为止,非常感谢您的帮助。我将代码缩减为以下形式(但问题仍然存在):

main.cpp中:

 #include "Fibonacci.h"

using namespace std;

int main(void){

    int RandInteger = 3;
    Fibonacci Fib(RandInteger);

}

Fibonacci.h

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 \\不起作用\\练习2 \\ fibo1 \\ Fibo1 \\ Debug \\ Fibo1.exe Fibo1错误1错误LNK2019:未解决的外部符号“ public: __thiscall Fibonacci :: Fibonacci(int)“(?? 0Fibonacci @@ QAE @ H @ Z)在函数_main C:\\ Dropbox \\ todo \\ c ++ \\ Exam \\ Ex2 \\中引用无效,\\ Exercise 2 \\ fibo1 \\ Fibo1 \\ main.obj Fibo1

我仍然坚持,但是一旦我将main.cpp中的行替换为

        Fibonacci Fib();

即我不将整数传递给构造函数,一切正常(好了,它编译并没有执行任何操作)。

谢谢你的帮助! 我真的还是被卡住了。

我终于找到了我的错误。 事实证明,代码本身确实没有错,但是我已经以某种方式销毁了VisualStudio项目。 我确实不是这些事情的专家,但是这对我有用:

  1. 在Visual Studio中创建一个新的空项目
  2. 将您的cpp文件(也都是* .h文件)复制到新项目文件夹中
  3. 通过右键单击项目并使用“添加新项”将它们添加到该新项目中

我知道这是这样做的直接方法,但是我看不到如何打破旧项目(毕竟应该足够简单)

谢谢大家-特别是感谢otisonoza和Angew,他们使我走上了正确的轨道,代码(在它们的末端有效)并没有错,但Visual Studio项目却没有错。

您的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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM