2005年07月04日
川俣晶の縁側技術関連執筆情報total 10485 count

【日経ソフトウェア4月号・今こそ再入門! Visual C++ C/C++の現在・過去・未来を体験しよう】のサンプルソースをVC++ 2005 Beta2で動かす方法

Written By: 川俣 晶連絡先

 日経ソフトウェア4月号掲載の今こそ再入門! Visual C++ C/C++の現在・過去・未来を体験しようは、Visual C++ Express 2005 Beta1を使用したいくつかのサンプルソースを紹介しています。しかし、同ソフトのBeta2では大幅な修正が行われ、この記事のサンプルソースの大半がそのままでは動作しないことが分かりました。

 そこで内容を確認の上、以下のようなメモを作成いたしました。

Visual C++ Express 2005 Beta2で実行する場合のメモ §

Visual C++ Express 2005 Beta2で実行する場合のメモ

2005年7月4日

川俣晶

 Visual C++ Express 2005のBeta1とBeta2では、非互換の修正が行われています。

 これにより、サンプルソースが一致しない部分、修正を要する部分があります。

リスト1 §

main()

 ↓

int main()

図16 §

main()

 ↓

int main()

図17 §

 リスト全体を以下の通りに差し替えます。ただし、このリストは自動的に生成されるもので、入力する必要はありません。

#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)

{

    Console::WriteLine(L"Hello World");

    return 0;

}

リスト2: §

 リスト全体を以下の通りに差し替えます。

 Finalizeメソッドの実装は、先頭に!記号を付けたデストラクタに似た構文に変更されています。

#include "stdafx.h"

using namespace System;

ref class RefClass

{

public:

    RefClass()

    {

        Console::WriteLine("RefClass Constructed");

    }

    !RefClass()

    {

        Console::WriteLine("RefClass Finalized");

    }

};

class TraditionalClass

{

public:

    TraditionalClass()

    {

        Console::WriteLine("TraditionalClass Constructed");

    }

    virtual ~TraditionalClass()

    {

        Console::WriteLine("TraditionalClass Destructed");

    }

};

int main()

{

    TraditionalClass * t = new TraditionalClass();

    RefClass ^r = gcnew RefClass();

    delete t;

    Console::WriteLine("_tmain done");

    return 0;

}

リスト3: §

 リスト全体を以下の通りに差し替えます。

 主に引数の扱いの変更に伴って、コードを一部変更しています。

#include "stdafx.h"

using namespace System;

using namespace System::IO;

int main(array<System::String ^> ^args)

{

    if( args->Length != 4 )

    {

        Console::WriteLine( L"usage: 入力ファイル名 入力エンコーディング名 出力ファイル名 出力エンコーディング名" );

        return 2;

    }

    String ^sourceFileName = args[0];

    String ^sourceEncodingName = args[1];

    String ^destinationFileName = args[2];

    String ^destinationEncodingName = args[3];

    StreamReader ^ reader = gcnew StreamReader(sourceFileName,

        System::Text::Encoding::GetEncoding(sourceEncodingName));

    try

    {

        StreamWriter ^ writer = gcnew StreamWriter(destinationFileName,false,

            System::Text::Encoding::GetEncoding(destinationEncodingName));

        try

        {

            while( true )

            {

                String ^ s = reader->ReadLine();

                if( s == nullptr ) break;

                writer->WriteLine(s);

            }

        }

        finally

        {

            writer->Close();

        }

    }

    finally

    {

        reader->Close();

    }

    return 0;

}

以上

Facebook

このサイト内の関連コンテンツ リスト

2005年
02月
23日
日経ソフトウェア4月号・今こそ再入門! Visual C++ C/C++の現在・過去・未来を体験しよう
3days 0 count
total 3156 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20050704165042
サイトの表紙【技術関連執筆情報】の表紙【技術関連執筆情報】のコンテンツ全リスト 【技術関連執筆情報】の入手全リスト 【技術関連執筆情報】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.