声明的变量在其他类中不可访问

时间:2018-07-08 04:11:47

标签: c++

class crect
{
   CPoint startpt;
   CPoint endpt;
   int lnwidth;

   crect(CPoint from, CPoint to, int wd) //constructor
   {
      startpt = from;
      endpt = to;
      lnwidth = wd;
   }
};

class shape
{
   crect *rect = new crect(from, to, wd); //  wd showing error at this line
};

在形状程序中使用上述构造函数,然后在wd处显示错误...

3 个答案:

答案 0 :(得分:0)

from,to,wd的范围不会扩展到crect的构造函数之外。

使用与参数相同的名称不起作用-您需要指定实际值或传入在范围中声明的其他变量。

  

Quick tutorial on Scope

答案 1 :(得分:0)

如果您未指定访问说明符,则默认情况下,类的成员将变为private,因此对我来说,似乎两个构造函数都是private

答案 2 :(得分:0)

两件事 首先确保所有变量都存在(从to和wd)

第二个构造函数是私有的,因此您不能在class之外创建类对象。试想一下,就好像您有一个私有的int一样;在您的类中,并且您尝试使用obj.a之类的对象访问a; 您在此处执行的操作类似于单例设计模式。在您将构造函数设为私有的情况下,除了class的getInstance()方法之外,没有人可以创建对象。

因此,如果我的猜测正确,则将构造函数声明为公共应该可以为您解决问题。