0

我对给我们的这段代码感到非常困惑:

class KeyedWord
{
public:
    KeyedWord(char* word); // TO BE IMPLEMENTED
    char* getWord(); // TO BE IMPLEMENTED
    char* getKey();  // TO BE IMPLEMENTED
    ~KeyedWord();
private:
    char * _word;
    char* _key;
};
void main(int argumentCount, char** arguments)
{
    if (argumentCount <= 1) 
    {
        std::cout << "No file name given as argument" << std::endl;
    }
    else 
    {
}

我很困惑,因为:

如果 main 是程序的起源,我应该如何为 main 提供重载?

此外,当我尝试实现上述功能之一时,我收到一条错误消息,告诉我存在定义错误。这就是我正在尝试的:

void KeyedWord::getWord()
{

    return;
}
4

2 回答 2

1

您不能重载该main功能。

从标准:

3.6.1 主函数[basic.start.main]

2/ 实现不应预定义主要功能。该功能不得重载。它的返回类型应该是 type int,否则它的类型是实现定义的。所有实现都应允许:

  • () 的函数返回int
  • ( int, 指向char) 的指针的函数返回int

你也声明

 class KeyedWord
{
public:
    // ...
    char* getWord(); // TO BE IMPLEMENTED

    // ...
};

并且您将方法定义为

   void KeyedWord::getWord() { ... }
// ^^^^

返回类型不正确...

于 2013-09-20T09:11:05.967 回答
0

您可以使用 void main(...),它只是不标准。顺便说一句,这是重载:

void func();

void func(int value);

并且您不能对主要功能执行此操作。

于 2013-09-20T09:49:40.320 回答