0

次のコードを見てください

電卓.h

#pragma once
#include <iostream>

template<class T>


class Calculator
{
public:
    Calculator(void);
    ~Calculator(void);

    void add(T x, T y)
    {
        cout << (x+y) << endl;
    }

    void min(T x, T y)
    {
        cout << (x-y) << endl;
    }

    void max(T x, T y)
    {
        cout << (x*y) << endl;
    }

    void dev(T x, T y)
    {
        cout << (x/y) << endl;
    }
};

メイン.cpp

#include "Calculator.h"

using namespace std;

int main()
{

    Calculator<double> c;
    c.add(23.34,21.56);


    system("pause");
    return 0;
}

このコードを実行すると、以下のエラーが発生します。私はクラス テンプレートにあまり詳しくありません。助けてください!

1>------ Build started: Project: TemplateCalculator, Configuration: Debug Win32 ------
1>LINK : error LNK2001: unresolved external symbol _mainCRTStartup
1>c:\users\yohan\documents\visual studio 2010\Projects\TemplateCalculator\Debug\TemplateCalculator.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
4

3 に答える 3

0

プロジェクトの種類が間違っている可能性があります。このコードは、コンソール アプリケーションで記述する必要があります。

ちなみに、他の答えも、特にコンストラクタとデストラクタの定義を考慮する必要があります。

于 2013-02-07T06:16:01.380 に答える
0

これをVS2010にすばやく投入しました。名前空間 std を使用していないため、cout と endl が気に入りませんでした。速度を上げるために、using ステートメントを挿入しました。通常は std:: 規則を使用することを好みます。これにより、「使用」によって生成される命名の問題が回避されるため

また、コンストラクタとデストラクタがないことについて不平を言いました({}に追加されました)

そして、前のコメントが言ったように、ヘッダー ファイルにメインを含めることもおそらく悪いことです。これはすべて、test.cpp のデフォルト プロジェクトにあります。

EDITファイル構造を変更して、電卓を.hに含めるようにしました

電卓.h

template<class T>


class Calculator
{
public:
    Calculator(void)
    {
    }
    ~Calculator(void)
    {
    }

    void add(T x, T y)
    {
        cout << (x+y) << endl;
    }

    void min(T x, T y)
    {
        cout << (x-y) << endl;
    }

    void max(T x, T y)
    {
        cout << (x*y) << endl;
    }

    void dev(T x, T y)
    {
        cout << (x/y) << endl;
    }

private:
    T numbers[2];
};

テスト.cpp

// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#pragma once
#include <iostream>
using namespace std;
#include "Calculator.h"

int main()
{

    Calculator<double> c;
    c.add(23.34,21.56);


    system("pause");
    return 0;
}
于 2013-02-07T06:08:49.937 に答える
0

コンストラクタとデストラクタの定義を追加する必要があります

 Calculator(void)  {}
 ~Calculator(void) {}

コンパイラにCalculator.h伝える必要があり、名前空間からのものです。例えば:coutendlstd

std::cout << (x*y) << std::endl; 
于 2013-02-07T06:11:13.063 に答える