gpt4 book ai didi

c++ - 不访问全局对象的类

转载 作者:行者123 更新时间:2023-11-27 23:19:24 30 4
gpt4 key购买 nike

这让我很困惑。出于某种原因,我得到一个

"c1 not declared in this scope"

编译器错误。我使用 Mingw 和 Code::Blocks。我会假设全局变量是程序的全局变量吗?我错了吗? TYIA - 罗兰

    // main.h
#include <iostream>

#include "classone.cpp"
#include "classtwo.cpp"

extern AnotherClass c2;
extern TheClass c1;


----------

// main.cpp
#include "main.h"

AnotherClass c2;
TheClass c1;

int main()
{

c1.function5();
c2.function2();

return 0;
}


----------

//classone.h

#include "main.h"
class AnotherClass {
`
public:
void function2();

void function3();

private:
int varone;
int vartwo;
};


----------

// classone.cpp

#include "classone.h"

void AnotherClass::function2() {

std::cout << "Function 2 Check\n";
}

void AnotherClass::function3() {

std::cout << "Function 3 Check";
}


----------

// classtwo.h

#include "main.h"
class TheClass {

public:
void function4();
void function5();
};


----------

// classtwo.cpp
#include "classtwo.h"

void TheClass::function4() {

c1.function2();
std::cout << "Function 2 Check\n";
}

void TheClass::function5() {

std::cout << "Function 3 Check";
}

最佳答案

像这样包含 .cpp 文件是很愚蠢的——只包含标题。

无论如何,将 main.h 更改为:

#include <iostream>
extern AnotherClass c2;
extern TheClass c1;

将此添加到 main.cpp 中:

AnotherClass c2;
TheClass c1;

然后在每个需要它的文件中包含main.h,像这样:

// classtwo.cpp
#include "classtwo.h"
#include "main.h"

void TheClass::function4() {

c1.function2();
std::cout << "Function 2 Check\n";
}

void TheClass::function5() {

std::cout << "Function 3 Check";
}

此外,如果您还没有守卫,则需要包括守卫。

关于c++ - 不访问全局对象的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14375651/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com