gpt4 book ai didi

c++ - C++中的预声明

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

我有一个距离 vector 路由程序,如下所示(不过,该程序的用途在这里并不重要)。问题是当我在 Windows 上使用 Turbo C++ 编译器运行这个程序时,它运行得非常好。

但是当我在 Fedora 9 上使用 gcc 编译它时(你可以看到我在“router”类的函数构建中使用的“r”),编译器告诉它它在声明之前使用,但在 turbo 中c++ 没问题。

有任何选项可以解决 gcc 编译器中的这个错误,或者对函数进行任何修改以执行相同的任务?请,请帮助我 - 在一个非常需要帮助的状态下 - 帮助会被记住...

#include <conio.h>
#include <iostream.h>

#define MAX 10
int n;

class router {
char adj_new[MAX], adj_old[MAX];
int table_new[MAX], table_old[MAX];

public:
router(){
for(int i=0;i<MAX;i++) table_old[i]=table_new[i]=99;
}

void copy(){
for(int i=0;i<n;i++) {
adj_old[i] =adj_new[i];
table_old[i]=table_new[i];
}
}

int equal() {
for(int i=0;i<n;i++)
if(table_old[i]!=table_new[i]||adj_new[i]!=adj_old[i])return 0;
return 1;
}

void input(int j) {
cout<<"Enter 1 if the corresponding router is adjacent to router"
<<(char)('A'+j)<<" else enter 99: "<<endl<<" ";
for(int i=0;i<n;i++)
if(i!=j) cout<<(char)('A'+i)<<" ";
cout<<"\nEnter matrix:";
for(i=0;i<n;i++) {
if(i==j)
table_new[i]=0;
else
cin>>table_new[i];
adj_new[i]= (char)('A'+i);
}
cout<<endl;
}

void display(){
cout<<"\nDestination Router: ";
for(int i=0;i<n;i++) cout<<(char)('A'+i)<<" ";
cout<<"\nOutgoing Line: ";
for(i=0;i<n;i++) cout<<adj_new[i]<<" ";
cout<<"\nHop Count: ";
for(i=0;i<n;i++) cout<<table_new[i]<<" ";
}

void build(int j) {
for(int i=0;i<n;i++)
for(int k=0;(i!=j)&&(k<n);k++)
if(table_old[i]!=99)
if((table_new[i]+r[i].table_new[k])<table_new[k]) {
table_new[k]=table_new[i]+r[i].table_new[k];
adj_new[k]=(char)('A'+i);
}
}
} r[10];

最佳答案

Turbo C++ 是一个非常古老的 MS-DOS 编译器,尽管它是在 2006 年更新的。

  • 删除 conio.h,因为 Fedora 上不太可能有它
  • 在 for 循环中声明的变量范围现在缩减为您必须在每个 for(i=0 ... 语句
  • 中将 i 重新声明为 int 的循环
  • 在路由器类之外定义 void router::build(int j) 方法:

    类路由器{

     void router::build(int j)

    } r[10];

    void router::build(int j) { ...}

  • 用 g++ -ansi 编译(编辑这里没有要求)

关于c++ - C++中的预声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796333/

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