2015-10-10 19 views
1

.cpp文件在链表代码

#include "StdAfx.h" 
#include "LinkX.h" 
#include<iostream> 
#include<string.h> 
using namespace std; 

LinkX::LinkX(int pid,char *pname) 
{ 
    id=pid; 
    strcpy(name,pname); 
    next=null; 
} 

void LinkX::displayLink() 
{ 
    cout<<id<<endl; 
    cout<<name<<endl; 
} 

上面的代码中的错误获得误差:

Error 3 error C2511: 'LinkX::LinkX(int,char *)' : overloaded member function not found in 'LinkX'

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 
      LinkX *L1=new LinkX(10,"Charvi"); 
      LinkX *L2=new LinkX(20,"Vin"); 
      L1->next=L2; 

      delete L1; 
      delete L2; 
     } 
    }; 

这段代码获得错误:

Error 1 :error C2664: 'LinkX::LinkX(int,char)' : cannot convert parameter 2 from 'const char [7]' to 'char' Error 2 :error C2664: 'LinkX::LinkX(int,char)' : cannot convert parameter 2 from 'const char [4]' to 'char'

什么这些错误是什么意思?

我该如何纠正它们?

这些代码是用visual studio编写的。

回答

0

关于第一个错误,

你在声明类的声明中LinkX::LinkX(int pid,char *pname)构造(在你的LinkX.h文件)?

关于第二个错误:

你的构造索要char*变量,表明它需要修改它。 当你调用它时,你使用了不能被修改的常量字符数组。 您的构造函数是否真的不需要修改pname变量,您只需将pname类型更改为const char*即可。

+0

我可以用你的帮助解决第一个错误,谢谢!但是我没有完全解释第二个错误,你能否进一步解释它? – Char

+0

我解决了前两个错误,但我仍然得到这个错误错误错误C2511:'LinkX :: LinkX(int,char * [])':未找到'LinkX'中的重载成员函数 – Char

+0

在C++中,一个变量可以是可变的或不变的。如果使用'const'关键字标记变量,则该变量是常量。 另一方面,硬编码的vaues总是常量,比如'42'或''foobar'''。 'char *'是一个非常量'char'内存的指针。这意味着,使用这个指针,你应该能够修改内存。 但是你的硬编码值“Charvi”是不变的,所以编译器考虑一个'const char *'指针来保护尖的内存。 所以你的常量值和你的构造函数之间有一个冲突,它要求一个非常量的指针。 –