我有一个子节点添加到另一个节点.我想让子节点相对于视图坐标而不是父节点坐标
我想创建Card和Deck类,但是我收到一条错误消息
不完全类型'卡'的分配
问题发生在Deck.cpp的Deck :: Deck()中
//
//Deck.h
#ifndef JS_DECK_H
#define JS_DECK_H
#include <iostream>
using std::cout;
#include <vector>
using std::vector;
//forward declaration
class Card;
namespace JS {
class Deck {
public:
Deck();
private:
vector<Card *>cards;
};
}
#endif
Run Code Online (Sandbox Code Playgroud)
//
//Deck.cpp
#include "Deck.h"
using namespace JS;
Deck::Deck(){
for(int suit = 0; suit < 4; suit++){
for(int rank = 1; rank < 14; rank++){
cards.push_back(new Card(rank, suit));//allocation of incomplete type 'Card'
}
}
}
Run Code Online (Sandbox Code Playgroud)
//
//Card.h
#ifndef JS_CARD_H
#define JS_CARD_H
#include <ostream>
using …Run Code Online (Sandbox Code Playgroud) 我试图改变一副牌,但random_shuffle每次产生相同的结果
void
Deck::shuffle() {
cout << "SHUFFLING CARDS!!!\n\n";
srand(time(0));
random_shuffle(cards.begin(), cards.end());
displayCards();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试重载operator<<但我继续将地址作为输出.
例如a Card *c = new Card(5,3);
那么如果我尝试用我的重载输出卡operator<<,
地址输出而不是说'5俱乐部'
cout << c; //0x100100ff0 ?????????????
Run Code Online (Sandbox Code Playgroud)
//Card.h
#ifndef JS_CARD_H
#define JS_CARD_H
#include <ostream>
using std::ostream;
#include <string>
using std::string;
#include <vector>
using std::vector;
namespace JS {
class Card {
friend ostream &operator<<(ostream &out, const Card &rhs);
public:
enum Suit { DIAMONDS, HEARTS, SPADES, CLUBS };
enum Rank { ACE = 1, JACK = 11, QUEEN = 12, KING = 13 };
Card(int rank, int suit) : rank(rank), suit(suit){} …Run Code Online (Sandbox Code Playgroud) 我的代码编译,虽然printf没有显示任何内容?
如果我取出格式化程序部分,printf那么它的工作正常.
#include <stdio.h>
size_t MyStrlen(const char *s1)
{
const char *s1Copy = s1;
while (*s1)
{
*s1Copy++;
}
return s1Copy -s1;
}
int main(void)
{
const char str[] = "HELLO";
printf("Length: %d \n", (unsigned int)MyStrlen(str));
return 0;
}
Run Code Online (Sandbox Code Playgroud)