ビジュアルスタジオコードまたは他のオンラインコンパイラでサイズを言及せずに配列を宣言すると正常に動作しますが、ビジュアルスタジオで同じコードを使用すると動作しません。不明なサイズの配列を宣言するのは正しくないことはわかっていますが、ポインターなどを使用しないという条件のために、使用する必要がありました。Visual Studio では、リンクと Web ページ クラスのみを作成したときに作業を行いました。
誰でもこれを行う方法を教えてもらえますか。
#include <iostream>
using namespace std;
class link
{
const char* name;
public:
link() :name("null")
{
cout<<"Default link constructor called"<<endl;
};
link(const char n[]) :name(n)
{
cout<< "Parameterized link constructor called"<<endl;
};
};
class webpage
{
private:
double height;
double width;
int linkno;
link links[];
public:
webpage() :height(10), width(10), linkno(2)
{
links[0]=NULL;
links[1]=NULL;
};
webpage(double hw,int lno, link hyperlinks[]) :height(hw), width(hw),linkno(lno)
{
for (int i = 0; i < linkno; i++)
{
links[i]=hyperlinks[i];
}
};
webpage(double h, double w,int lno, link hyperlinks[]) :height(h), width(w),linkno(lno)
{
for (int i = 0; i < linkno; i++)
{
links[i]=hyperlinks[i];
}
};
void showdata(int linkno)
{
cout << "height: " << height << endl;
cout << "width: " << width << endl;
cout << "links " << endl;
for (int i = 0; i < linkno; i++)
{
cout << "link #" << i + 1 << " = " << links[i].getname() << endl;
}
}
};
class website
{
private:
const char* name;
int webpageno;
webpage wpgs[];
public:
website() :name("null"),webpageno(4)
{
wpgs[0];
wpgs[1];
wpgs[2];
wpgs[3];
};
website(const char n[],int wpn, webpage page[]) :name(n),webpageno(wpn)
{
for (int i = 0; i < webpageno; i++)
{
wpgs[i]=page[i];
}
cout<<"Parameterized website constructor called"<<endl;
};
void showdata(int linkno, int pageno)
{
cout << endl<< "Website name: " << name << endl;
for (int j = 0; j < pageno; j++)
{
cout << "Webpage #" << j + 1 << " : " << endl;
wpgs[j].showdata(linkno);
cout<<endl<<endl;
}
}
};
int main(int argc, char* argv[])
{
link link1[2]={"maha","saira"};
webpage page[1]={{32,21,2,link1}};
website site("my website",1,page);
site.showdata(2,1);
}
Visual Studio では、リンクと Web ページ クラスのみを作成したときに作業を行いました。