我有数据,但它说无法解决变量"data"

I have data but it says can not resolve variable "data"

本文关键字:解决 变量 data 数据      更新时间:2023-10-16

我们正在学习类,我正在做我的作业,写一个类和5个不同的对象,并显示差异。

教授说我们应该使用默认构造函数,书中这样说:

默认构造函数是一种可以在没有参数的情况下调用的构造函数(可以用空参数列表定义,也可以为每个参数提供默认参数(。

我正在做老师做的事;你能告诉我为什么它说找不到data吗?

#include <iostream>
using namespace std;
class theC
{
private:
    string data;
public:
    theC() {
        printf("defaultn");
    }
};
int main()
{
    theC c1();
    theC c2();
    theC c3();
    theC c4();
    theC c5();
    c1.data = "different object 1";
    c2.data = "different object 2";
    c3.data = "different object 3";
    c4.data = "different object 4";
    c5.data = "different object 5";
    cout << c1.data << c2.data << c3.data << c4.data << c5.data;
    return 0;
}

您的代码有几个问题:

发布一个:在这些行中:

theC c1();  
theC c2();      
theC c3();  
theC c4();  
theC c5();

在这里,您正试图声明类theC的一个实例(对象(。但是,编译器将其视为c1函数的函数声明原型,该函数不接受任何参数(()为空(,并返回类型为theC的对象。

声明类的对象的正确语法是:theC c1;

因此,一旦您声明了类的变量,就会调用默认构造函数。这就是它的工作原理。

问题二:此外,您不能访问任何">私人"成员。你需要它是"公共"的,或者你需要使用getter和setter。

第三期:您使用的是不带#include <string>string类。

这些声明

int main()
{
    theC c1();
    theC c2();
    theC c3();
    theC c4();
    theC
    c5();
 //..

声明返回类型为theC且不带参数的函数c1、c2、c3、c4和c5。

改为写入

int main()
{
    theC c1;
    theC c2;
    theC c3;
    theC c4;
    theC
    c5;
 //...

此外,您至少应该包括头<string><cstdio>,因为程序使用这些头中的声明。

考虑到数据成员data被声明为私有。所以你可能不会像那样直接在类定义之外访问它

c1.data = "different object 1";
c2.data = "different object 2";
c3.data = "different object 3";
c4.data = "different object 4";
c5.data = "different object 5";