C++ 使用visualc++;2010
我是VC++新手,我正在尝试使用类。我的子例程可以像直接代码一样正常工作,但当我尝试在类中使用它时,总是会出错 下面是头文件的代码C++ 使用visualc++;2010,c++,winforms,visual-studio-2010,class,C++,Winforms,Visual Studio 2010,Class,我是VC++新手,我正在尝试使用类。我的子例程可以像直接代码一样正常工作,但当我尝试在类中使用它时,总是会出错 下面是头文件的代码 [using namespace std; #ifndef Deck_h #define Deck_h class Deck { public: // Default constructor Deck(); //Destructor ~Deck(); // access functions //function1 // Memb
[using namespace std;
#ifndef Deck_h
#define Deck_h
class Deck
{
public:
// Default constructor
Deck();
//Destructor
~Deck();
// access functions
//function1
// Member variables
int InDeck[53];
int OutDeck[53];
};
#endif
下面是.cpp文件的代码
#include "StdAfx.h"
#include "Deck.h"
#include <stdlib.h>
#include <time.h>
&Deck::Deck()
{ // start of Deck
int InDeck[53];
int OutDeck[53];
int icard;
int isuit=1;
for(int i = 1; i<=52; i++)
{ // Begin For i
icard = i % 13;
if(icard == 0){icard=13;}
InDeck[i] = isuit * 1000 + icard;
OutDeck[i] = 0;
if(icard == 13 ){isuit ++;}
}// end of for i...
// Randomize InDeck into OutDeck
int t = 0;
srand(time_t(NULL));
for(int j = 1; j<=52; j++)
{ // begin for j
icard = rand() % 52 +1;
t = 0;
while (OutDeck[icard] >= 1000)
{ // while
t++;
icard = rand() % 52 +1;
if(t > 10)
{ // Don't take too long shuffling
for(int k=1; k<=52; k++)
{ // put card in first empty slot
if(OutDeck[k] < 1000) {
icard = k;
t = 0;
break;
} // empty slot found
} //end of for k...
} // end of if t > 1000
} //end while
OutDeck[icard] = InDeck[j];
} // end for j
} // end of Deck
#包括“StdAfx.h”
#包括“Deck.h”
#包括
#包括
&甲板
{//甲板的起点
int InDeck[53];
int OutDeck[53];
国际民航组织;
int-isuit=1;
对于(int i=1;i 10)
{//洗牌时间不要太长
对于(int k=1;k 1000
}//结束时
甲板外[icard]=InDeck[j];
}//结束于j
}//甲板末端
下面是使用该类的代码
Deck mydeck;
array<PictureBox ^, 1> ^ pix = gcnew array<PictureBox ^, 1>(10);
pix[0] = this->pb1;
pix[1] = this->pb2;
pix[2] = this->pb3;
pix[3] = this->pb4;
pix[4] = this->pb5;
pix[5] = this->pb6;
pix[6] = this->pb7;
pix[7] = this->pb8;
pix[8] = this->pb9;
pix[9] = this->pb10;
for(int p = 1; p<= 10; p++)
{pix[p-1]->Image = Bitmap::FromFile("c:\\users\\Bob K\\Documents\\pictures\\" + System::Convert::ToString(mydeck.OutDeck[p]) + ".bmp");
}
} //End of Form1 load
Deck-mydeck;
数组^pix=gc新数组(10);
pix[0]=此->pb1;
pix[1]=此->pb2;
pix[2]=本->pb3;
pix[3]=本->pb4;
pix[4]=本->pb5;
pix[5]=本->pb6;
pix[6]=此->pb7;
pix[7]=此->pb8;
pix[8]=本->pb9;
pix[9]=本->pb10;
对于(int p=1;pImage=Bitmap::FromFile(“c:\\users\\Bob K\\Documents\\pictures\\”+System::Convert::ToString(mydeck.OutDeck[p])+“.bmp”);
}
}//Form1加载结束
这些是错误消息
1> Deck.cpp1> 正在生成代码…
1> CardsOne.obj:错误LNK2028:未解析的令牌(0A000013)“公共:u clrcall Deck::~Deck(void)”(?1选中@@$$FQAM@XZ)在函数“private:void\u clrcall CardsOne::Form1::Form1\u Load(类系统::对象^,类系统::事件参数^)”中引用(?Form1_Load@Form1@CardsOne@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
1>CardsOne.obj:错误LNK2019:未解析的外部符号“public:u clrcall Deck::~Deck(void)”(??1选中@@$$FQAM@XZ)在函数“private:void\u clrcall CardsOne::Form1::Form1\u Load(类系统::对象^,类系统::事件参数^)”中引用(?Form1_Load@Form1@CardsOne@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
1>C:\Users\Bob K\Documents\Visual Studio 2010\Projects\CardsOne\Debug\CardsOne.exe:致命错误LNK1120:2个未解析的外部
==========生成:0成功,1失败,0最新,0跳过==========
如果有人能给我定义析构函数的帮助,我将不胜感激。如果你不使用析构函数,我可能会在标题中定义析构函数,甚至不写它。~Deck();,链接器会说:“你在.h文件中告诉我某处会有一个
~Deck
函数,但我找不到它的定义。”
<>你不使用析构函数,只需从你的头删除<代码> >()/<代码>。< /P>不为C++,即C++ + CX或C++ + CLI请适当地标记。你的代码中有很多奇怪的东西。为什么你的卡有53张卡?<代码> >代码> > <代码>:在构造函数的主体中,你正在创建2个局部变量<代码> InDeck > /Cord>和<代码> OutAcdio>代码,这将使同名的数据成员影子化。你从[1, 52 ]索引而不是[0, 52 ]索引。C++,C++CLI不是C++!