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具体实现一般是不同的)。