LNK2019错误与简单类

时间:2015-06-10 19:02:46

标签: c++ class calculator lnk2019

(对不起,我知道有很多关于这个错误的帖子,但是他们似乎没有像我想要建立的那么简单的程序。我道歉,但我不知道足够关于C ++来弄清楚如何使用其他问题对我有利。)

我正在构建一个简单的计算器程序,该程序基于为我的C ++课程定义和初始化一个类。我认为我差不多完成了,但我一直收到错误:

  

Driver.obj:错误LNK2019:未解析的外部符号" public:__ thishisall> Calculator :: Calculator(void)" (?? 0Calculator @@ QAE @ XZ)在函数> _main

中引用

我认为它与我的默认构造函数有关,但任何人都可以帮助我吗?我感谢任何帮助!

代码如下:

Calculator.cpp

#include <string>
#include <iostream>
#include "Calculator.h"

using namespace std;

void Calculator::SetOperation(char oper, double opa, double opb)
{
    Calculator::operation = oper;
    Calculator::op1 = opa;
    Calculator::op2 = opb;
}

void Calculator::Calc()
{
    switch(operation)
        {
        case ('+'):
            answer = op1 + op2;
            result = "Your operation is addition: " + to_string(op1) + " + " + to_string(op2) + " = " + to_string(answer) + '\n';
            break;

        case ('-'):
            answer = op1 - op2;
            result = "Your operation is subtraction: " + to_string(op1) + " - " + to_string(op2) + " = " + to_string(answer) + '\n';
            break;

        case ('*'):
            answer = op1 * op2;
            result = "Your operation is multiplication: " + to_string(op1) + " * " + to_string(op2) + " = " + to_string(answer) + '\n';
            break;

        case ('/'):
            answer = op1 / op2;
            result = "Your operation is division: " + to_string(op1) + " / " + to_string(op2) + " = " + to_string(answer) + '\n';
            break;
        }
}

string Calculator::GetResults()
{
    return result;
}

Calculator.h

#ifndef _CALCULATOR_H_
#define _CALCULATOR_H_

#include <string>

using namespace std;

class Calculator
{
private:
    char operation;
    double op1;
    double op2;
    double answer;
    string result;
    void Calc();
public:
    Calculator();
    void SetOperation(char oper, double opa, double opb);
    string GetResults();
};

#endif

Driver.cpp

//

#include <string>
#include <iostream>
#include "Calculator.h"
#include "Functions.h"

using namespace std;

int main()
{
    char op;
    double numA, numB;
    string ing, correct("no"), equals, another("no");
    Header();

    Calculator MyCalc;

    do
    {
        do
        {
            cout<< "Enter the number of an operator from the following:\n\n"
                << "Addition (+):        1      Subtraction (-):  2\n"
                << "Multiplication (*):  3      Division (/):     4\n\n";
            cin >> op;
            cin.ignore();
            switch(op)
            {
            case (1):
                op = '+';
                cout<< "\n\nLet's do some addition!\n\n";
                ing = "adding";
                break;
            case (2):
                op = '-';
                cout<< "\n\nLet's do some subtraction!\n\n";
                ing = "subtracting";
                break;
            case (3):
                op = '*';
                cout<< "\n\nLet's do some multiplication!\n\n";
                ing = "multiplying";
                break;
            case (4):
                op = '/';
                cout<< "\n\nLet's do some division!\n\n";
                ing = "dividing";
                break;
            }

            cout<< "Please enter your first operand: ";
            cin >> numA;
            cin.ignore();

            cout<< "\n\nPlease enter your second operand: ";
            cin >> numB;
            cin.ignore();

            if (op == '/' && numB == 0)
            {
                cout<< "!!!!!     ILLEGAL OPERATION\n!!!!!     Can't divide by zero!";
                correct = "no";
            }
            else
            {
                cout<< "We'll be " << ing << ' ' << numA << " and " << numB << ", correct?\n<yes/no>>> ";
                getline(cin, correct);
            }

        } while(correct != "yes");

    MyCalc.SetOperation(op, numA, numB);
    equals = MyCalc.GetResults();
    cout<< "\n\n" << equals;

    cout<< "\n\n\nWould you like to perform another calculation?\n<yes/no>>>";
    } while (another != "no");
}

Functions.h

#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H_

void Header();

#endif

Functions.cpp

#include <string>
#include <iostream>
#include "Functions.h"

using namespace std;

void Header()
{
    do
    {
    cout<< "blah blah blah";
    } while(cin.get() != '\n');
}

1 个答案:

答案 0 :(得分:2)

您已在Calculator.h中声明了构造函数,但未在Calculator.cpp(或其他任何位置)中对其进行定义。

添加

Calculator::Calculator() { }

Calculator.cpp将解决问题。