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
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)
{
}