在类函数中使用对象
Use object in class function
我对c++相当陌生,我在试图在另一个类函数中使用一个类对象时遇到了问题。例如:
#ifndef CARD_HPP
#define CARD_HPP
#include <string>
enum Suits
{
SPADES,
CLUBS,
HEARTS,
DIAMONDS
};
enum Values
{
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING,
ACE
};
class Card
{
public:
Card(Values value, Suits suit);
Values getValue() const;
Suits getSuit() const;
void showCard();
std::string toString(Values v);
std::string toString(Suits s);
private:
Suits suit;
Values value;
};
:
#ifndef DECK_OF_CARDS_HPP
#define DECK_OF_CARDS_HPP
#include "card.hpp"
#include <vector>
#include <string>
Values enumValueOfIndex(int i);
Suits enumSuitOfIndex(int i);
class DeckOfCards
{
public:
DeckOfCards();
void shuffleDeck();
void printDeck();
Card drawCard();
private:
const std::string suit_strings[4];
const std::string value_strings[13];
unsigned seed;
Values values;
Suits suits;
std::string suit;
std::string value;
std::vector<Card> deck;
};
#endif
我有一个错误时,在我的Deck::printDeck()
当尝试做:
Card card = deck.at(i); //I have already added 52 card objects to deck
我得到的错误是:
error: non-object type 'Card (Values, Suits)' is not assignable
card = deck.at(i);
我基本上是用旧的Java代码来做这个,这就是我所做的。我不知道我是否需要在我的Deck
头/源中定义/声明Card
对象,甚至如何做到这一点。我觉得这是一个简单的问题,但我找不到任何解决办法。谢谢你的帮助!
看起来你需要定义一个复制构造函数和赋值操作符,尝试添加:
Card(const Card& rhs);
Card& operator=(const Card& rhs);
为您的类定义一个复制赋值构造函数将使=
(赋值操作符)在您的程序中运行。
Card( const Card & input );
如果您想为=
操作符赋予特殊含义,那么您应该覆盖它。你可以在下面找到一些对你有帮助的资源:
- c++入门第5版书。第7.1.5章将帮助你理解类的特殊函数 在这里你会发现一些其他的参考资料,是免费的。
- 在这里,您将了解更多关于操作符重载的信息。
相关文章:
- 有没有办法将重载的类函数绑定到函数对象?
- C++ 类对象作为函数参数
- 类中的 Arduino 对象构造函数设置垃圾值
- 构造函数中没有参数的对象类成员按什么顺序初始化?
- 如何从静态类函数初始化静态类对象
- 访问另一个类中的模板化嵌套类函数和对象
- 如何调用其对象位于函数内的类方法
- 使用类函数将类对象添加到数组中
- 通过C++函数对象类访问参数
- 如何在unordered_set hasher的自定义类对象的函数中求解此错误
- 什么更有效率?在重载函数中或通过在基类函数中检查对象类型来实现
- 如何使用单个对象调用具有相同名称的两个类函数
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 您可以将派生的类对象作为函数参数代替基类对象吗?
- 如何判断哪个派生的类对象称为基类函数
- 非对象函数/类函数C++
- 你如何调用类函数,但使用不同的类对象
- 如何将类的对象传递给对象的类函数中的函数?
- cpp 从需要超类对象的函数访问子类对象方法
- 具有常数对象参数的类函数