【问题标题】:Passing a class object pointer to default constructor (C++ Subroutines)将类对象指针传递给默认构造函数(C++ 子例程)
【发布时间】:2017-11-26 00:05:05
【问题描述】:

我正在处理一项任务,其中涉及创建一个名为 Sub 的类,该类将表示子例程。该类将包含一个带有四个参数的构造函数:名称(字符串)、指向其静态父 object 的指针、参数数量和变量数量。

如果静态父指针为 NULL,则该对象没有父对象。我坚持如何将指针作为参数之一传递给构造函数,特别是如果我希望指针为 NULL 以表示第一个子例程。这是我到目前为止所拥有的:

class Sub
{
public:
    Sub(); //constructor
    Sub::Sub(string sName, Sub &sParent, int sNumberofArguments, int sNumberofLocalVariables); // default constructor

private:
    string name;
    Sub * parent;
    int numberOfArguments;
    int numberOfLocalVariables;
};

...

Sub::Sub(string sName, Sub &sParent, int sNumberofArguments, int sNumberofLocalVariables)
{
    name = sName;
    parent = &sParent;
    numberOfArguments = sNumberofArguments;
    numberOfLocalVariables = sNumberofLocalVariables;
}

...

int main(){
    Sub first("first", NULL, 4, 5); //ERROR
    Sub second("second", first, 3, 6); 
}

【问题讨论】:

标签: c++ class pointers object subroutine


【解决方案1】:

要么使您的构造函数采用Sub * 而不是Sub &,要么制作一个不采用Sub & 并在内部将父级设置为nullptr 的附加构造函数。

【讨论】:

  • 即使我将构造函数更改为采用Sub *,这些错误也会出现在 main: 错误 C2664: 'Sub::Sub(const Sub &)' : cannot convert argument 2 from 'int ' 到 'Sub &' 错误 C2664: 'Sub::Sub(const Sub &)' : 无法将参数 2 从 'Sub *' 转换为 'Sub &'
  • @user9008895:触发该错误的代码行是什么?
  • Sub first("first", NULL, 4, 5); Sub second("second", first, 3, 6);
  • 请立即发布您的完整代码,其中包含您问题中的错误。您在上述评论中写的错误意味着您根本没有使用我的答案。
  • 我让它工作了。这是我的 IDE 的问题,而不是代码的问题。我重新启动它,程序能够运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2012-11-14
  • 2014-06-04
  • 2014-07-08
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多