【问题标题】:An error in the LinkList codeLinkList 代码中的错误
【发布时间】:2015-10-10 06:08:11
【问题描述】:

.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;
}

上面的代码得到错误:

错误 3 错误 C2511: 'LinkX::LinkX(int,char *)' : 重载成员 在“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;
         }
    };

此代码出现错误:

错误 1 ​​:error C2664: 'LinkX::LinkX(int,char)' : 无法转换 参数 2 从 'const char [7]' 到 'char' 错误 2 :error C2664: 'LinkX::LinkX(int,char)' : 无法从 'const char 转换参数 2 [4]' 到 'char'

这些错误是什么意思?

我该如何纠正它们?

这些代码是在 Visual Studio 中编写的。

【问题讨论】:

    标签: c++ visual-studio linked-list


    【解决方案1】:

    关于第一个错误,

    您是否在类声明中(在您的LinkX.h 文件中)声明了LinkX::LinkX(int pid,char *pname) 构造函数?

    关于第二个错误:

    您的构造函数要求一个char* 变量,表明它需要修改它。 当您调用它时,您使用无法修改的常量 char 数组。 你的构造函数真的不需要修改pname变量吗,你只要把pname类型改成const char*就可以了。

    【讨论】:

    • 在您的帮助下,我能够解决第一个错误,谢谢!但我不太明白你对第二个错误的解释?你能进一步解释一下吗?
    • 我解决了前两个错误,但我仍然收到此错误错误 1 ​​错误 C2511: 'LinkX::LinkX(int,char *[])' : 在 'LinkX' 中找不到重载的成员函数
    • 在 C++ 中,变量可以是可变的或恒定的。如果使用 const 关键字标记,则变量是常量。另一方面,硬编码的值始终是常量,例如42"foobar"char* 是非常量 char 内存上的指针。这意味着,使用此指针,您应该能够修改内存。但是您的硬编码值"Charvi" 是常量,因此编译器考虑使用const char* 指针以保护指向的内存。因此,您的常量值和请求非常量指针的构造函数之间存在冲突。
    • 在您的第一篇文章中,您提到了LinkX::LinkX(int,char *)。现在你告诉我们LinkX::LinkX(int,char *[])。所以你的问题应该是第二个参数:char *[] 等价于char** 而不是char*
    • 是的,非常感谢您的帮助,我解决了错误。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多