C语言大学教程上的一个发牌程序,为什么这里报错“禁止使用不完整的类型”?

问题描述:

card.h

card.cpp

DeckofCards.h

DeckofCards.cpp

波浪线处使用card类时报错禁止使用不完整的类型

把DeckofCards.h中前两行的宏定义改一下

#ifndef DECKOFCARDS_H
#define DECKOFCARDS_H

因为之前card.h已经包含的CARD_H定义,导致DeckofCards.h中类定义无效

或者简单用

#pragma once

 

 

theCard() ? 它的定义是什么? 你的语句是不是要写 card = theCard(...) ? 

vector<class card> desk;去掉class

试试在card.h加一行#include<string>,看看报错有没有改变?

cstring和string是两个不同的头文件,cstring管的是C-style字符串,string管的是STL字符串,二者完全不是同一个东西。你用着STL字符串,却引用C风格字符串头文件,居然没有报“找不到string类型”的错误,我也感到很惊奇。可能是这个库实现内部存在一些依赖吧(不同工具链提供的STL具体实现一般是不同的)。