我有数据,但它说无法解决变量"data"
I have data but it says can not resolve variable "data"
我们正在学习类,我正在做我的作业,写一个类和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";
相关文章:
- C++ 循环屏障中的倒计时使用原子变量出错[请无锁的解决方案]
- 继承构造函数和其他变量的解决方法
- 如何解决多次继承的不明确变量名称?
- C++不正确,不需要重新声明类成员变量 MFC 手工解决方案/项目 MS VS 2015
- 解决具有嵌套模板化变量的 Visual Studio 内部编译器错误
- 高速解决方案以循环浏览不同变量的所有组合,并使用启动步骤停止方案(C )
- 我应该如何使用条件变量解决饮食哲学家的问题
- 如何解决头文件中的变量冲突?
- C++ getline(cin,变量)行为不端.网站上没有任何解决方案有帮助
- 仅限 Xcode 9 - 如何解决由类模板中的静态变量引起的 [-Wundefined-var-template] 警告
- MSVC2015更新3变量模板解决方法
- 解决错误的一般方法:变量周围的堆栈'x'已损坏
- 解决由全局静态变量引起的内存问题
- 如何解决Qt创建者的变量"<not accessible>"行为?
- 您将如何在 VS 中管理应该基于解决方案的环境变量
- 我不断收到错误"变量'b'未初始化正在使用,我不确定如何解决它
- 如何通过引用捕获异常来解决局部变量问题
- 多个源文件中的外部全局变量未解决的链接器错误
- 当变量传递给函数无关紧要时,如何解决 gmock EXPECT_CALL失败
- 我有数据,但它说无法解决变量"data"