C++ typedef 和返回类型:如何让编译器识别使用 typedef 创建的返回类型


#include <iostream>
using namespace std;
class A {
    typedef int myInt;
    int k;
public:
    A(int i) : k(i) {}
    myInt getK();
};
myInt A::getK() { return k; }
int main (int argc, char * const argv[]) {
    A a(5);
    cout << a.getK() << endl;
    return 0;
}

编译器在此行中未将 myInt 识别为"int":

myInt A::getK() { return k; }

如何让编译器将 myInt 识别为 int?

typedef创建同义词,而不是新类型,因此myIntint已经相同。问题是作用域 — 全局作用域中没有myInt,您必须在类之外使用A::myInt

A::myInt A::getK() { return k; }

A::myInt A::getK() { return k; }

您必须限定typedef类型,因为你是在类A范围内创建的。

将定义放在类之外。

相关内容

最新更新