Search code examples
c++qtunresolved-external

Unresolved external issue c++


trying to use an externally declared class object, but receiving an error.

wager.h

#ifndef WAGER_H
#define WAGER_H
#include <QString>

void won_color_bets(int cardsDealt);


class Wager
{

    int bet;
    int payout;


public:

    bool didBet;
    bool won;
    QString colorBet;
    QString colorResult;

    Wager();
};

extern Wager street1;

#endif // WAGER_H

wager.cpp

#include "wager.h"
#include "deck.h"
#include<QDebug>
#include<QVector>
#include<QList>
#include"mainwindow.h"


Wager street1;
Wager street2;
Wager street3;
Wager street4;
Wager street5;

mainwindow.cpp

void MainWindow::street1BetRedClicked()
{
    street1.colorBet="Red";
    qDebug()<<"street1Red Clicked";
}

mainwindow.obj:-1: error: LNK2001: unresolved external symbol "class Wager street1" (?street1@@3VWager@@A)

debug is outputting street1Red Clicked successfully


Solution

  • Below error message tells you either you haven't linked Wager.cpp file or you have missed implementing one function. In your case you forgot to give function definition to Wager();

    error: LNK2001: unresolved external symbol "class Wager street1" (?street1@@3VWager@@A)

    To fix this issue, you need to implement Wager() somewhere, either in Wager.cpp or Wager.h. I provide an sample implementation for Wager::Wager()(default constructor: function name is the same as class name and takes 0 argument). Note: Below code also initialize all class members in member initializers list.

    Wager::Wager()
    :bet(0),
     payout(0),
     didBet(false),
     won(false),
     colorBet("blue"),
     colorResult("blue)
    {
    }