功能“未在此范围内声明”

时间:2013-04-21 21:46:19

标签: c++

我是C ++的新手并且得到了初学者的错误:

  

myclass.cpp:在函数'int main()'中:
  myclass.cpp:14:16:错误:'func'未在此范围内声明

这是代码:

#include <iostream>
using namespace std;

class MyClass{
public:
    int func(int);
};

int MyClass::func(int a){
    return a*2;
}

int main(){
    cout << func(3);
}

我希望你能帮助我。

3 个答案:

答案 0 :(得分:5)

int main(){
    cout << func(3);
}

func不是全局函数;它是该类的成员函数。您需要该类的实例才能访问它。

例如:

int main()
{
   MyClass obj;
   std::cout<< obj.func(3);
}

答案 1 :(得分:4)

func是一个成员函数,因此必须通过对象调用它。例如:

int main()
{
    MyClass obj;

    std::cout << obj.func(3); // 6
}

在您的示例中,您将其视为自由函数,因此编译器会查找具有该名称的函数。由于找不到它,它发出了编译错误。

答案 2 :(得分:3)

funcMyClass的成员函数。要调用它,您需要一个MyClass类型的对象来调用它:

int main(){
    MyClass m; // Create a MyClass object
    cout << m.func(3);
}

或者,您可以使func成为static成员函数,这意味着它不与该类的任何特定实例相关联。但是,您仍然需要将其名称限定为属于MyClass类:

class MyClass{
public:
    static int func(int);
};

int MyClass::func(int a){
    return a*2;
}

int main(){
    cout << MyClass::func(3);
}