1

私は次のC++を持っています(これはまだ実際には何もしていません...)

#include "stdafx.h"
#include <iostream>

using namespace std;

class Ranker 
{
    int up, down;
  public:
    void set_ranks(int, int);
    int rank(int, int, int, double);
}

void Ranker::set_ranks(int a, int b)
{
    up = a;
    down = b;
}

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

実行すると、MS VC++で次のエラーメッセージが表示されます。

1>------ Build started: Project: rankclass, Configuration: Debug Win32 ------
1>  rankclass.cpp
1>c:\users\student\desktop\solomon w. c++\rankclass\rankclass\rankclass.cpp(17): error C2628: 'Ranker' followed by 'void' is illegal (did you forget a ';'?)
1>c:\users\student\desktop\solomon w. c++\rankclass\rankclass\rankclass.cpp(18): error C2556: 'Ranker Ranker::set_ranks(int,int)' : overloaded function differs only by return type from 'void Ranker::set_ranks(int,int)'
1>          c:\users\student\desktop\solomon w. c++\rankclass\rankclass\rankclass.cpp(13) : see declaration of 'Ranker::set_ranks'
1>c:\users\student\desktop\solomon w. c++\rankclass\rankclass\rankclass.cpp(18): error C2371: 'Ranker::set_ranks' : redefinition; different basic types
1>          c:\users\student\desktop\solomon w. c++\rankclass\rankclass\rankclass.cpp(13) : see declaration of 'Ranker::set_ranks'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

なぜこれが...ランカーの後にボイドが続かないのですか?!?!

4

2 に答える 2

19

Ranker宣言の後にセミコロンがありません。

そのはず:

class Ranker 
{
    int up, down;
  public:
    void set_ranks(int, int);
    int rank(int, int, int, double);
};  // <--- Note semicolon
于 2012-07-02T17:56:17.647 に答える
4

クラス定義の後にセミコロンが続き、12 行目にセミコロンを追加します。

于 2012-07-02T17:57:50.563 に答える