0

下午好。我从 Visual c++ 开始,我有一个我不明白的编译问题。

我得到的错误如下:

错误 LNK1120 外部链接未解析

错误 LNK2019

我粘贴代码:

C++测试控制台.CPP

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

int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
string res = StringUtils::GetProperSalute("Carlos").c_str();
cout << res;
return 0;
}

StringUtils.cpp

#include "StdAfx.h"
#include <stdio.h>
#include <ostream>
#include "StringUtils.h"
#include <string>
#include <sstream>
using namespace std;


static string GetProperSalute(string name)
{
return "Hello" + name;
}

头文件:StringUtils.h

#pragma once
#include <string>
using namespace std;



class StringUtils
{

public:

static string GetProperSalute(string name);

};
4

1 回答 1

2

您只需要static在类定义中声明该方法,并在定义时使用类名对其进行限定:

static string GetProperSalute(string name)
{
return "Hello" + name;
}

应该

string StringUtils::GetProperSalute(string name)
{
return "Hello" + name;
}

其他注意事项:

  • 删除using namespace std;. 更喜欢完整的资格(例如std::string
  • 您的课程StringUtils似乎更适合作为namespace(这将意味着对代码进行更多更改)
  • string res = StringUtils::GetProperSalute("Carlos").c_str();没用,你可以这样做:string res = StringUtils::GetProperSalute("Carlos");
  • 通过const引用而不是按值传递字符串:std::string GetProperSalute(std::string const& name)
于 2012-10-03T14:24:25.197 回答