C ++,为什么在结构/类中不需要前向声明

时间:2018-01-25 03:13:14

标签: c++

在C ++中,为什么以下编译:

@csrf_exempt
def my_django_view(request):
    if request.method == 'POST':
        r = requests.post('http://127.0.0.1:8000/api/test/', data=request.POST)
    else:
        r = requests.get('http://127.0.0.1:8000/api/test/', data=request.GET)

    if r.status_code == 201 and request.method == 'POST':
        data = r.json()
        testsave_attrs = {
            "book": data["book"],
        }
        testsave= T1.objects.create(**testsave_attrs)
        return HttpResponse(r.text)
    elif r.status_code == 200:  # GET response
        return HttpResponse(r.json())
    else:
        return HttpResponse('Could not save data')

但不是以下内容:

struct test {
    void foo() { this->bar++; }
    int bar;
};

要清楚,我确实理解在第二种情况下void foo() { bar++; } int bar; 缺少foo的前向声明而且没有编译。但是我不明白为什么第一个因为同样的原因没有失败。

1 个答案:

答案 0 :(得分:2)

如果是结构,则结构中可以使用成员变量的范围。因此,如果在结构中定义一个函数,该函数中的变量将可用。

但在第二种情况下情况并非如此。