gpt4 book ai didi

c++ - 错误 : expected ')' before '*' token

转载 作者:行者123 更新时间:2023-11-30 01:56:25 24 4
gpt4 key购买 nike

下面标题中的构造函数签名有问题。编译器给我消息:

错误:'*' 标记前应为 ')'

谁能告诉我这里可能遗漏了什么?

#ifndef PRIORITYQUEUE_H
#define PRIORITYQUEUE_H

#include <iostream>
#include <cstdlib> //We'll need to use srand() and rand() as well as clock()
#include <ctime>
#include <vector>
#include <list>
#include "Graph.h" //header for Graph class

using namespace std;

class PriorityQueue
{

public:

PriorityQueue(Graph*):infiniteDist(9999);

void set_previous_node(int, int);

int get_node_value(int);

void set_node_value(int, int); //Change the node value of an element

void markVisited(int);

bool contains(int); //Does the queue contain a particular vertex?

void insertIntoQueue(int);

int top(); //pick an unvisited node with the shortest distance.

int queueSize();

void print();

private:

class vertexNode {
public:
int nodeNum;
int nodeValue;
int previousNode; //previous node visited with shortest distance from source
bool wasVisited;
};

vector<vertexNode> nodeValues;
const int infiniteDist; //value to represent infinite distance
int nodeQuantity;


};

#endif // PRIORITYQUEUE_H

实际的构造函数用于:

PriorityQueue::PriorityQueue(Graph* graph):infiniteDist(9999)
{
...
}

最佳答案

您正尝试在 PriorityQueue(Graph*):infiniteDist(9999); 的声明中使用初始化表达式来部分声明构造函数。这是不允许的。声明(通常在 .h 文件中)应该只是:

PriorityQueue(Graph* graph);

定义(通常在 .cpp 文件中)应该是:

PriorityQueue::PriorityQueue(Graph* graph)
: infiniteDist(9999)
{
...
}

原因很简单,初始化列表已经是定义的一部分,即方法的作用,而不仅仅是名称和返回类型的声明。假设您在声明中使用不同的数字(比如 42),在定义中使用另一个数字(9999),应该使用哪个?因此这是不允许的。

关于c++ - 错误 : expected ')' before '*' token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com