【问题标题】:c++ pointer void function issue [closed]c ++指针void函数问题[关闭]
【发布时间】:2017-01-21 13:53:53
【问题描述】:

刚开始用c++,在java和python中做了一些编码,但是一直报错:

非标准语法;使用'&'创建指向成员的指针

尝试多次更改代码,但无法解决问题。问题在于我的主要功能中的 void setRadius。

circleType.h

#include <iostream>
using namespace std;

class circleType {
private:
    double radius;
public:
    circleType();
    void setRadius();
    double getRadius();
}; 

circle.cpp

circleType::circleType() {}

void circleType::setRadius() {
    cout << "what is the radius of your circle:  ";
    cin >> radius;
}

double circleType::getRadius() {
    cout << "your radius is: " << radius << endl;
    return radius;
}

int main() {
    circleType circle;
    circleType::setRadius;
    double radius = circle.getRadius;
    return 0;
}

编辑

已解决的简单语法错误 - 这解决了我的问题。

circle.setRadius();
double radius = circle.getRadius();

【问题讨论】:

  • 指针在哪里?
  • circle.setRadius();双半径 = circle.getRadius();无论您在哪里学习 C++,都可以从其他地方学习。
  • 删除第二行。 main() 的第三行必须是 circle.getRadius()。如果没有(),这两行(表面上)都会尝试评估成员函数的地址,而不是调用它,而正确的做法是像编译器所说的那样使用&amp;
  • 那个也是。因为它不会为问题添加任何有用的东西。但是你确实会因为发布一个糟糕的问题而被否决。它无法提供minimal reproducible example,甚至从未解释过问题是什么。请参阅How to Ask 解决此问题。
  • 您被否决的原因有几个:1) 您没有提出具体问题。 2) 您没有包含确切的错误消息,也没有告诉我们您在收到错误消息时要执行的操作。 (编译?链接?执行?)。 3)您没有将代码简化到复制问题所需的最低限度。

标签: c++ function pointers void


【解决方案1】:
circleType::setRadius;
double radius = circle.getRadius;

第一行没有做任何事情。第二行尝试将double 类型的变量设置为等于函数。也许您想调用这些函数?

这是 C++ 中非运算符成员函数调用的样子:

double area = circle.areaCir(radius);
double circumferance = circle.circumCir(radius);
circle.printCir(circumferance, area);

所以试试这个:

circle.setRadius();
double radius = circle.getRadius();

【讨论】:

  • 第一行实际上是 OP 询问的编译器错误的原因。说它什么都不做是不正确的——它是无效的语法。
猜你喜欢
  • 1970-01-01
  • 2012-09-26
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2018-04-19
  • 1970-01-01
  • 2015-12-06
相关资源
最近更新 更多